ขณะทำงานกับ Microsoft Excel ขนาดใหญ่ บางครั้งต้องเรียงข้อมูลจากน้อยไปมาก สามารถทำได้ง่ายด้วย VBA Macros บทความนี้จะสอน 3 วิธี เรียงจากน้อยไปมากด้วย VBA Autofilter ใน Excel อย่างมีประสิทธิภาพ
เรียงจากน้อยไปมาก VBA Autofilter ใน Excel (ภาพรวม)
Sub Autofilter_Sort_Smallest_to_Largest()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("D4"), Order:=xlAscending
.SetRange Range("B4:E16")
.Header = xlYes
.Apply
End With
End Sub
3 วิธีเรียงจากน้อยไปมากด้วย VBA Autofilter ใน Excel
ชุดข้อมูล: ข้อมูลพนักงานขายกลุ่ม Armani - ชื่อ, ประเภทสินค้า, สั่งซื้อ, ส่งมอบ (คอลัมน์ B, C, D, E)
1. เรียงจากน้อยไปมากด้วยลำดับขึ้น (Ascending Order) ใน VBA Autofilter
เรียงตามคอลัมน์ Ordered (สั่งซื้อ) จากน้อยไปมาก
- เปิด Module: Developer > Visual Basic > Insert > Module
- วางโค้ด:
Sub Autofilter_Sort_Smallest_to_Largest()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("D4"), Order:=xlAscending
.SetRange Range("B4:E16")
.Header = xlYes
.Apply
End With
End Sub
- รันโค้ด: Run > Run Sub/UserForm
- ข้อมูลจะถูกเรียงจากน้อยไปมากตามคอลัมน์ Ordered
อ่านเพิ่มเติม: VBA AutoFilter หลายเงื่อนไขในฟิลด์เดียวใน Excel (4 วิธี)
2. ใช้หลายคอลัมน์เรียงจากน้อยไปมากพร้อมหัวข้อใน Excel VBA
เรียงหลายคอลัมน์พร้อมกัน: ชื่อพนักงานขาย และ สั่งซื้อ จากน้อยไปมาก
- แทรก Module ใหม่ วางโค้ด:
Sub Sort_Multiple_Columns()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("D4"), Order:=xlAscending
.SetRange Range("B4:E16")
.Header = xlYes
.Apply
End With
End Sub
- รันโค้ด - ข้อมูลจะเรียงตามชื่อ แล้วตามจำนวนสั่งซื้อ จากน้อยไปมาก
อ่านเพิ่มเติม: [แก้ไข]: AutoFilter Method of Range Class Failed (5 วิธีแก้)
3. ใช้ VBA Autofilter เรียงจากน้อยไปมากตามชื่อชีท
เรียงตามคอลัมน์ ส่งมอบ (Delivered) จากน้อยไปมาก โดยระบุชื่อชีท
- แทรก Module วางโค้ด:
Sub Sort_Smallest_to_Largest()
Rows("4:16").Select
ActiveWorkbook.Worksheets("Smallest to Largest").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Smallest to Largest").Sort.SortFields.Add Key:=Range("E4:E16") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Smallest to Largest").Sort
.SetRange Range("B4:E16")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
- รันโค้ด - ข้อมูลจะเรียงจากน้อยไปมากตามคอลัมน์ส่งมอบ ในชีทที่ระบุชื่อ
อ่านเพิ่มเติม: วิธี Autofilter และคัดลอกแถวที่มองเห็นได้ด้วย Excel VBA
สิ่งที่ควรจำ
- 👉 กด Alt + F11 พร้อมกัน เพื่อเปิด Microsoft Visual Basic for Applications
- 👉 หากไม่เห็นแท็บ Developer ให้ไปที่ File > Option > Customize Ribbon เพื่อเปิดใช้งาน
สรุป
หวังว่า 3 วิธี เรียงจากน้อยไปมาก ด้วย VBA จะช่วยให้คุณนำไปประยุกต์ใช้กับสเปรดชีต Excel ได้อย่างมีประสิทธิภาพ ยินดีต้อนรับคำถามหรือข้อสงสัยในส่วนความคิดเห็น