การคัดลอกข้อมูลจากหลายแผ่นงาน ของ 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
ความคิดเห็น
แสดงความคิดเห็น