Page 1 of 1
การคัดลอกแถวของข้อมูลที่เป็นตัวอักษร (VBA)
Posted: Fri Oct 28, 2016 10:23 pm
by Kanok
ต้องการคัดลอกข้อมูลของแถวใน column B (sheet1) เฉพาะแถวของข้อมูลที่มีตัวอักษร เช่น C1, A, B เป็นต้น
ไปวางไว้ที่แถวสุดท้ายของตารางใน Sheet2 ค่ะ
[img]
PQ_คัดลอกข้อมูลในแถวที่เป็นตัวอักษร.jpg
[/img]
โดยเบื้องต้น เขียน Code ดังนี้ :
Code: Select all
Dim rg As Range
Set rg = Worksheets("Sheet1").Range("B")
rg.SpecialCells(xlTextValues).Select ' Find Text in column B at sheet 1
Selection.Copy
Worksheets("sheet2").Select
Set lastrow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
lastrow.Select
lastrow.Paste
End Sub
###ใช้ SpecialCells(xlTextValues) เพื่อหา Cell ที่มีข้อมูลเป็น Text ไม่แน่ใจว่าคำสั่งนี้ใช้ในการหา Cell ที่มีตัวอักษรอยู่ด้วยได้หรือไม่
ถ้าไม่ได้ ไม่ทราบว่าเราควรที่จะใช้คำสั่งอะไรแทน เนื่องจาก cell ที่มีตัวอักษรอยู่ด้วยนั้นมีหลากหลาย เช่น C1, A2, B
บางเซลล์มีตัวอักษรเพียงอย่างเดียว บางเซลล์เป็นเซลล์ที่มีทั้งตัวอักษรและตัวเลขค่ะ
ขอคำแนะนำด้วยค่ะ
PQ4-คัดลอกข้อมูลในแถวที่เป็นตัวอักษร.xlsm
Re: การคัดลอกแถวของข้อมูลที่เป็นตัวอักษร (VBA)
Posted: Sat Oct 29, 2016 8:33 am
by snasui

ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Sub CopyArea()
Dim rg As Range
Dim lastrow As Range
Set rg = Worksheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeConstants, 2) ' Find Text in column B at sheet 1
Set rg = Union(rg, rg.Offset(0, -1))
Set lastrow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
rg.Copy lastrow
End Sub
Re: การคัดลอกแถวของข้อมูลที่เป็นตัวอักษร (VBA)
Posted: Sun Oct 30, 2016 7:54 pm
by Kanok
ขอบคุณมากๆค่ะ สำหรับโค้ด

Re: การคัดลอกแถวของข้อมูลที่เป็นตัวอักษร (VBA)
Posted: Sat Jul 25, 2020 4:43 pm
by pro602
snasui wrote: Sat Oct 29, 2016 8:33 am

ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Sub CopyArea()
Dim rg As Range
Dim lastrow As Range
Set rg = Worksheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeConstants, 2) ' Find Text in column B at sheet 1
Set rg = Union(rg, rg.Offset(0, -1))
Set lastrow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
rg.Copy lastrow
End Sub
อาจารย์ครับช่วยแนะนำรายล่ะเอียด Code ให้ผมพอได้เป็นแนวทางไปประยุกต์ใช้งานหน่อยครับ
Set rg = Worksheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeConstants, 2)....เลข 2 หมายถึงอะไรครับ
และ Union(rg, rg.Offset(0, -1)) ....หมายถึงอะไรครับ
ขอบคุณครับผม
Re: การคัดลอกแถวของข้อมูลที่เป็นตัวอักษร (VBA)
Posted: Sat Jul 25, 2020 5:05 pm
by snasui
pro602 wrote: Sat Jul 25, 2020 4:43 pm
Set rg = Worksheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeConstants,
2)....เลข 2 หมายถึงอะไรครับ

เป็นการเลือกเฉพาะเซลล์ที่เป็น Text หากเทียบการเลือกด้วยมือจะเป็นการกดแป้น F5 > Special และเลือกตามภาพครับ
SpecialCellsText.png
pro602 wrote: Sat Jul 25, 2020 4:43 pm
และ Set rg = Union(rg, rg.Offset(0, -1)) ....หมายถึงอะไรครับ
หมายถึงให้นำเซลล์ของ tg และคอลัมน์ด้านหน้าของ tg มา Union คือให้ผนวกทั้งสองช่วงเข้าด้วยกันแล้วกำหนดให้เป็นตัวแปร rg ครับ
Re: การคัดลอกแถวของข้อมูลที่เป็นตัวอักษร (VBA)
Posted: Mon Jul 27, 2020 1:34 pm
by pro602
snasui wrote: Sat Jul 25, 2020 5:05 pm
pro602 wrote: Sat Jul 25, 2020 4:43 pm
Set rg = Worksheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeConstants,
2)....เลข 2 หมายถึงอะไรครับ

เป็นการเลือกเฉพาะเซลล์ที่เป็น Text หากเทียบการเลือกด้วยมือจะเป็นการกดแป้น F5 > Special และเลือกตามภาพครับ
SpecialCellsText.png
pro602 wrote: Sat Jul 25, 2020 4:43 pm
และ Set rg = Union(rg, rg.Offset(0, -1)) ....หมายถึงอะไรครับ
หมายถึงให้นำเซลล์ของ tg และคอลัมน์ด้านหน้าของ tg มา Union คือให้ผนวกทั้งสองช่วงเข้าด้วยกันแล้วกำหนดให้เป็นตัวแปร rg ครับ
-ขอบคุณครับ