การคัดลอกข้อมูลจากหลายแผ่นงาน ของ Excel
ถ้าต้องการรวมข้อมูลที่มีโครงสร้างเหมือนกัน ในหลาย ๆ แผ่นงาน นำมารวมไว้ในแผ่นงานเดียวกัน เพื่อจะได้เปรียบเทียบ หรือเรียงข้อมูลใหม่ จะทำอย่างไร
เช่น ในกรณีที่ใช้ Excel เก็บข้อมูลการใช้จ่ายเงินงบประมาณโครงการหลายโครงการ ( แผ่นงาน Excel คุมงบประมาณโครงการ หลายโครงการ) แยกเป็นโครงการละ Sheet ต่อมาต้องการนำข้อมูลทั้งหมดมารวมกัน และเรียงข้อมูลตามวันที่ จะทำอย่างไร
สมมติว่า ต้องการรวมข้อมูลจาก 2 แผ่นงาน ข้างล่างนี้ ไว้ด้วยกันเป็นแผ่นงานเดียว
ข้อมูลแผ่นงานที่ 1
ข้อมูลแผ่นงานที่ 2
วิธีที่สะดวกที่สุด คือการลากดำแล้ว คัดลอก และวาง จะสะดวกที่สุด แต่ถ้ามี เป็นสิบ ๆ แผ่นงาน ไม่น่าจะสะดวกแน่ ใช้ Macro ข้างล่างนี้ จัดการนำข้อมูลทั้งหมดมารวมกัน ดูจะสะดวกกว่ามาก
Sub Combine()
Sheets(1).Activate
วิธีใช้งาน
แหล่งที่มา
Allen Wyatt, http://excel.tips.net/T003005_Condensing_Multiple_Worksheets_Into_One.html
เช่น ในกรณีที่ใช้ Excel เก็บข้อมูลการใช้จ่ายเงินงบประมาณโครงการหลายโครงการ ( แผ่นงาน Excel คุมงบประมาณโครงการ หลายโครงการ) แยกเป็นโครงการละ Sheet ต่อมาต้องการนำข้อมูลทั้งหมดมารวมกัน และเรียงข้อมูลตามวันที่ จะทำอย่างไร
สมมติว่า ต้องการรวมข้อมูลจาก 2 แผ่นงาน ข้างล่างนี้ ไว้ด้วยกันเป็นแผ่นงานเดียว
ข้อมูลแผ่นงานที่ 1
ข้อมูลแผ่นงานที่ 2
วิธีที่สะดวกที่สุด คือการลากดำแล้ว คัดลอก และวาง จะสะดวกที่สุด แต่ถ้ามี เป็นสิบ ๆ แผ่นงาน ไม่น่าจะสะดวกแน่ ใช้ Macro ข้างล่างนี้ จัดการนำข้อมูลทั้งหมดมารวมกัน ดูจะสะดวกกว่ามาก
Sub Combine()
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' เพิ่ม Sheet เพื่อยังคงรักษาข้อมูลเดิมไว้ทั้งหมด
Sheets(1).Name = "รวมข้อมูลทั้งหมด"
' คัดลอกส่วนหัวตารางส่วนบน ถ้าข้อมูลอยู่ในตำแหน่งอื่น ให้เปลี่ยนตามข้อมูลที่มี
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
' สำรวจว่ามีทั้งหมดกี่แผ่นงาน และเลือกทั้งหมด
For J = 2 To Sheets.Count ' จากแผ่นงานที่ 2 ถึงสุดท้าย
Sheets(J).Activate ' เลือกแผ่นงานทั้งหมด
Range("A1").Select
Selection.CurrentRegion.Select
' เลือกทั้งหมด ยกเว้นส่วนหัว
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
' คัดลอกข้อมูลจากทุกแผ่นงานมาต่อกันที่แผ่นงาน รวมข้อมูลทั้งหมด
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
Sheets(1).Activate
End Sub
วิธีใช้งาน
- ลากดำและคัดลอกฟังก์ชั่นข้างบน
- เปิดไฟล์ Excel ที่มีข้อมูลที่ต้องการเรียง แล้วกดปุ่ม Alt+F11 เพื่อเปิดหน้าต่าง VBA
- คลิกเลือก สมุดงานนี้
- คลิกบริเวณที่จะวางโค้ด แล้่ววางข้อมูล โดยกด Ctrl + V
- ปิดหน้าจอ VBA
- ไปที่แถบ มุมมอง > แมโคร > แสดงแมโคร
- เลือกแโคร แล้วจดปุ่ม เรียกใช้
- ข้อมูลทุกแผ่นงานจะมารวมกันที่แผ่นงานใหม่
- จากนั้นก็สามารถจะเรียงข้อมูล หรือกรองข้อมูลต่าง ๆ ได้ ตามต้องการ โดยเฉพาะ ถ้ามีข้อมูลเป็นร้อย ๆ แผ่นงาน ก็สามารถทำได้โดยง่าย
แหล่งที่มา
Allen Wyatt, http://excel.tips.net/T003005_Condensing_Multiple_Worksheets_Into_One.html
ความคิดเห็น
แสดงความคิดเห็น