ในที่นี่จะใช้ VBA ในการช่วยทำ ซึ่งจะง่ายมาก ๆ สำหรับบทความนี้ใช้ Excel 2016 ในการทำ ผมมีไฟล์ทั้งหมด 22 ไฟล์ ต้องการ copy เข้าไปอยู่ใน Sheet ...
ในที่นี่จะใช้ VBA ในการช่วยทำ ซึ่งจะง่ายมาก ๆ สำหรับบทความนี้ใช้ Excel 2016 ในการทำ ผมมีไฟล์ทั้งหมด 22 ไฟล์ ต้องการ copy เข้าไปอยู่ใน Sheet เดียวกัน (ทุกไฟล์มีจำนวนคอลัมภ์เหมือนกัน) ถ้าจะ Copy เองนี่คงต้องขยันกันหน่อย
ลองนึกดูว่าถ้ามีไฟล์มากกว่านี้จะเป็นอย่างไร...
เริ่มกันเลยดีกว่าครับ
1. เปิด Excel ขึ้นมาก่อนเลยครับ
2. ไปที่เมนู Developer คลิกเลือก Visual Basic จะได้หน้าต่างของ Visual Basic ขึ้นมา
3. คลิกไอคอนตามภาพ เลือก Module
จะได้หน้าต่างสำหรับพิมพ์โค๊ด VB
ลองนึกดูว่าถ้ามีไฟล์มากกว่านี้จะเป็นอย่างไร...
เริ่มกันเลยดีกว่าครับ
1. เปิด Excel ขึ้นมาก่อนเลยครับ
2. ไปที่เมนู Developer คลิกเลือก Visual Basic จะได้หน้าต่างของ Visual Basic ขึ้นมา
ถ้า Excel ของท่านไม่มีเมนู Developer ก็ให้ไปที่ File >> Option เลือก Costomize Ribbon ที่ Main Tabs ให้ติ๊กถูกหัวข้อ Developer
3. คลิกไอคอนตามภาพ เลือก Module
จะได้หน้าต่างสำหรับพิมพ์โค๊ด VB
Sub GetSheets()
Path = "C:\cwt33\"
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
พิมพ์ code เสร็จแล้ว กด Run Code โปรแกรมก็จะนำทุก Sheets ที่มีอยู่ในแต่ละไฟล์มารวมกันไว้ที่ไฟล์เดียวในที่นี้ไฟล์ผมเก็บไว้ที่ไดร์ c:\cwt33 และทุกไฟล์ นามสกุล .xlsx4. ทีนี้เราก็จะรวมทุก Sheets ให้เป็น Sheet เดียวโดยเปลี่ยน VBA Code เป็น
Sub CollectData()
Dim ws As Worksheet
Dim r As Range
Dim rTarget As Range
Dim DataAll As String
DataAll = "Sheet1"
Application.ScreenUpdating = False
For Each ws In Worksheets
If ws.Name <> DataAll Then
With Sheets(DataAll)
Set rTarget = .Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End With
Set r = ws.Range("A2", ws.Range("A" & Rows.Count).End(xlUp))
r.SpecialCells(xlCellTypeConstants).EntireRow.Copy
rTarget.PasteSpecial xlPasteValues
End If
Next ws
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
เสร็จแล้วกด Run เหมือนเดิม Code ก็จะเอาข้อมูลทุก Sheets มารวมกันไว้ที่ Sheet เดียวให้โดยอัตโนมัติ
สวัสดีค่ะ รบกวนสอบถามเพิ่มเติม ไม่ทราบว่าตรงช่วงของ code r.SpecialCells(xlCellTypeConstants).EntireRow.Copy
ตอบลบrTarget.PasteSpecial xlPasteValues
หมายถึงอะไรหรอคะ