วันอาทิตย์ที่ 17 มีนาคม พ.ศ. 2556

การเรียงข้อมูลหลายแผ่นงานพร้อมกัน

ใน Excel ถ้ามีการจัดเก็บข้อมูลโครงสร้างเหมือนกัน แต่แยกเก็บในหลายแผ่นงาน เช่น อาจจะแยกเป็นรายภูมิภาค รายร้านค้า รายแผนก หรือ อื่น ๆ เป็นต้น การเรียงข้อมูลในแต่ละแผ่นงาน จะทำได้ช้า โดยเฉพาะถ้ามีแผ่นงานจำนวนมาก ยิ่งจะช้ามาก เนื่องจากต้องทำทีละแผ่นงาน

การเรียงข้อมูลหลายแผ่นงานพร้อมกัน ต้องใช้ VBA หรือ แมโคร ช่วย

วิธีการเรียกใช้งาน แมโคร ให้ดูเรื่อง การคัดลอกข้อมูลจากหลายแผ่นงาน ของ Excel

ข้อควรระวัง
เมื่อเรียงข้อมูลแล้ว จะย้อนกลับเดิมไม่ได้ ดังนั้นก่อนเรียงข้อมูลควรคัดลอกข้อมูลเดิมไว้ก่อน หรือคัดลอกข้อมูลไปที่อื่น แล้วจึงทำการใช้แมโครนี้

Sub SortAllSheets()

'ปรับแก้ตามข้อมูลของท่าน
Const firstColToSort = "A" ' คอลัมน์แรก
Const lastColToSort = "C"   ' คอลัมน์สุดท้าย
Const keyCol = "A" ' คอลัมน์ที่จะให้เรียงข้อมูล

' คอลัมน์ที่มีข้อมูลทุกแถว
'อาจจะใช้ keyCol ก็ได้ แต่ไม่จำเป็น
Const testCol = "C"

' แถวเริ่มต้นข้อมูล (หัวตาราง)
Const startFrom = 1

Dim anyWS As Worksheet
Dim sortRange As Range
Dim sortKey As Range
'next improves performance
Application.ScreenUpdating = False
For Each anyWS In ThisWorkbook.Worksheets
Set sortRange = anyWS.Range(firstColToSort & startFrom  & ":" _
& lastColToSort & _
anyWS.Range(testCol & Rows.Count).End(xlUp).Row)
Set sortKey = anyWS.Range(keyCol & 2)
sortRange.Sort Key1:=sortKey, Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Next

Set sortRange = Nothing
Set sortKey = Nothing
Set anyWS = Nothing

End Sub

การปรับใช้งาน

ถ้าข้อมูลเริ่มที่ A1 โดยเป็นหัวตาราง และข้อมูลจริงเริ่มที่ A2 จะสามารถใช้ได้เลย โดยไม่ต้องปรับเปลี่ยน

แต่ถ้าข้อมูลเริ่มต้นในตำแหน่งอื่น ต้องปรับตำแหน่งที่ระบุใน แมโคร ให้ถูกต้องด้วย เช่น ข้อมูลเริ่มต้นที่เซลล์ A3



ให้เปลี่ยนตำแหน่งเริ่มต้น ดังนี้

' แถวเริ่มต้นข้อมูล
startFrom = 3

เป็นต้น





ที่มา
www.excelbanter.com/showthread.php?t=259638

ไม่มีความคิดเห็น:

แสดงความคิดเห็น