คุณสมบัติ AutoFilter ของ Excel มีประสิทธิภาพในการดึงข้อมูลตามเงื่อนไข การใช้ VBA เป็นวิธีที่มีประสิทธิภาพ เร็ว และปลอดภัยที่สุด บทความนี้จะแสดง 4 วิธี AutoFilter กับหลายเงื่อนไขในฟิลด์เดียวกัน (คอลัมน์เดียว) ใน Excel ด้วย VBA macro
ดาวน์โหลดสมุดงานฝึกหัด
4 วิธี VBA สำหรับ AutoFilter หลายเงื่อนไขในคอลัมน์เดียว
1. ใช้ VBA AutoFilter หลายเงื่อนไขตัวเลขในคอลัมน์เดียว
ชุดข้อมูล: คอลัมน์ B มี Random Numbers, คอลัมน์ D มี Odd Numbers จะกรองคอลัมน์ B ตามค่าคี่ในคอลัมน์ D
- กด Alt + F11 เปิด Visual Basic Editor
- จากเมนูบาร์ Insert > Module
- วางโค้ดต่อไปนี้:
Sub AutoFilterWithMultipleCriteriaOnSameColumn()
Dim iArray As Variant
With ThisWorkbook.Worksheets("Column")
iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
End Sub
- กด F5 หรือ Run Sub/UserForm เพื่อรันแมโคร
ผลลัพธ์: คอลัมน์ B ถูกกรองเหลือเฉพาะเลขคี่เท่านั้น
อ่านเพิ่มเติม: Excel VBA ตรวจสอบว่า AutoFilter เปิดอยู่หรือไม่ (4 วิธี)
2. ใช้ VBA AutoFilter ด้วยตัวดำเนินการ AND ในคอลัมน์เดียว
xlAND คืนค่าที่ตรง ทั้งสองเงื่อนไข ตัวอย่าง: กรองคอลัมน์ B ค่าที่ >= 2 และ <= 9 (ค่าอยู่ใน E4, E5)
- เปิด VBE แทรก Module
- วางโค้ด:
Sub AutoFilterOnSameColumnWithAND()
With ThisWorkbook.Worksheets("AND")
.Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
End Sub
- รันแมโคร - ผลลัพธ์: คอลัมน์ B กรองค่า 2 ถึง 9
อ่านเพิ่มเติม: [แก้ไข]: AutoFilter Method of Range Class Failed (5 วิธีแก้)
3. ใช้แมโคร AutoFilter ด้วยตัวดำเนินการ OR ในคอลัมน์เดียว
xlOR คืนค่าที่ตรง เงื่อนไขใดเงื่อนไขหนึ่ง ตัวอย่าง: กรองคอลัมน์ B ค่าที่ >= 12 หรือ <= 7
- เปิด VBE แทรก Module
- วางโค้ด:
Sub AutoFilterOnSameColumnWithOR()
With ThisWorkbook.Worksheets("OR")
.Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
End Sub
- รันแมโคร - ผลลัพธ์: คอลัมน์ B กรองค่า >=12 หรือ <=7
อ่านเพิ่มเติม: วิธี Autofilter และคัดลอกแถวที่มองเห็นได้ด้วย Excel VBA
4. ใช้ VBA AutoFilter ตามหลายค่าข้อความในฟิลด์เดียว
กรองคอลัมน์ B (ชื่อประเทศ) ตาม 2 ประเทศที่กำหนดในโค้ด: Australia และ England
- เปิด VBE แทรก Module
- วางโค้ด:
Sub AutoFilterOnSameColumnWithMultipleTexts()
Dim iArray As Variant
iArray = Array("Australia", "England")
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
End Sub
- รันแมโคร - ผลลัพธ์: คอลัมน์ B กรองเหลือ Australia และ England เท่านั้น
อ่านเพิ่มเติม: วิธี Autofilter ค่าที่ไม่เท่ากับค่าที่กำหนดด้วย VBA ใน Excel
สรุป
บทความนี้แสดง 4 วิธี AutoFilter กับหลายเงื่อนไขในฟิลด์เดียวกัน (คอลัมน์เดียว) ใน Excel ด้วย VBA macro: กรองตัวเลขหลายค่า, ใช้ AND, ใช้ OR, และกรองข้อความหลายค่า หวังว่าจะเป็นประโยชน์ สามารถถามคำถามเพิ่มเติมได้