ตัวกรองอัตโนมัติ ของ Excel คุณลักษณะมีประสิทธิภาพมากในการดึงข้อมูลตามเงื่อนไขบางประการ การใช้งาน VBA เป็นวิธีที่มีประสิทธิภาพ รวดเร็วที่สุด และปลอดภัยที่สุดในการรันการดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดง 4 วิธีในการ ตัวกรองอัตโนมัติที่มีหลายเกณฑ์ในฟิลด์เดียวกัน (คอลัมน์) ใน Excel ด้วย มาโคร VBA .
ดาวน์โหลดสมุดงาน
คุณสามารถดาวน์โหลดเวิร์กบุ๊ก Excel แบบฝึกหัดฟรีได้จากที่นี่
4 วิธีด้วย VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกัน (คอลัมน์) ใน Excel
ต่อจากส่วนนี้ คุณจะได้เรียนรู้วิธีกรองอัตโนมัติด้วยข้อความและค่าตัวเลขหลายรายการ โดยใช้ตัวดำเนินการ AND และตัวดำเนินการ OR ในคอลัมน์เดียวกัน ใน Excel ด้วย VBA ใน 4 เกณฑ์ที่แตกต่างกัน
1. ฝัง VBA ลงในตัวกรองอัตโนมัติด้วยเกณฑ์ตัวเลขหลายรายการในคอลัมน์เดียวกัน
พิจารณาชุดข้อมูลต่อไปนี้ คอลัมน์ B ประกอบด้วย ตัวเลขสุ่ม ในขณะที่ คอลัมน์ D ถือเฉพาะ เลขคี่ . สิ่งที่เราจะทำที่นี่คือ กรองคอลัมน์ B ตามเกณฑ์ที่อยู่ในคอลัมน์ D; นั่นหมายถึง ตัวเลขสุ่ม (คอลัมน์ B ) จะถูก กรองโดย เลขคี่ โดยมีเกณฑ์ รวมและระหว่างตัวเลขที่อยู่ในคอลัมน์ D .
เรามาดูกันว่าจะทำอย่างไรกับ VBA ใน Excel
ขั้นตอน:
- ในตอนแรก ให้กด Alt + F11 บนแป้นพิมพ์ของคุณหรือไปที่แท็บ นักพัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .
- ถัดไป ในหน้าต่างรหัสป๊อปอัป จากแถบเมนู ให้คลิก แทรก -> โมดูล .
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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 บนแป้นพิมพ์หรือจากแถบเมนู ให้เลือก เรียกใช้ -> เรียกใช้ Sub/UserForm . คุณยังสามารถคลิกที่ไอคอนการวิ่งขนาดเล็ก ในแถบเมนูย่อยเพื่อเรียกใช้มาโคร
หลังจากรันโค้ดสำเร็จแล้ว ให้ดูภาพต่อไปนี้เพื่อดูผลลัพธ์
ดังที่คุณเห็นจากภาพด้านบน คอลัมน์ B ตอนนี้ กรองแล้ว ที่มีเฉพาะ เลขคี่ .
คุณสามารถใช้รหัสเดียวกันเพื่อกรองข้อมูลตามตัวเลขคู่ . ในกรณีนั้น คุณเพียงแค่เก็บตัวเลขคู่ไว้ในคอลัมน์อื่นแทนที่จะเป็นเลขคี่
คำอธิบายโค้ด VBA
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)))
กรอก อาร์เรย์ . ที่กำหนดไว้ ด้วย เกณฑ์ที่จัดเก็บไว้ใน คอลัมน์ D เริ่มที่ เซลล์ D5 .
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
- กรองคอลัมน์ ข เริ่มที่ เซลล์ B4 ตามเกณฑ์หลายเกณฑ์ที่เก็บไว้ ใน อาร์เรย์ . ที่กำหนดไว้ .
- หลังจากนั้น ออก แผ่นงาน .
อ่านเพิ่มเติม: Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)
2. ใช้ VBA เพื่อกรองอัตโนมัติด้วย AND Operator ในคอลัมน์เดียวกันใน Excel
xlAND โอเปอเรเตอร์ใน Excel ทำงานด้วยสองเกณฑ์ ส่งกลับค่าที่ตอบสนองทั้งสองเกณฑ์ .
ตอนนี้ ให้พิจารณาชุดข้อมูลต่อไปนี้ คอลัมน์ B ประกอบด้วย ตัวเลขสุ่ม และเราแทรก สองเงื่อนไขในช่วง D4:E5 . เงื่อนไขคือ คอลัมน์ B ต้องกรอง ด้วยตัวเลขที่ มากกว่าหรือเท่ากับ 2 (ค่าที่เก็บไว้ใน เซลล์ E4 ) และ น้อยกว่าหรือเท่ากับ 9 (ค่าที่เก็บไว้ใน เซลล์ E5 ). เราจะกรอง คอลัมน์ B ตามเงื่อนไขเหล่านั้นด้วย AND Operator ใน Excel VBA .
ขั้นตอนในการรับมีดังนี้
ขั้นตอน:
- เหมือนเมื่อก่อน เปิด Visual Basic Editor จาก นักพัฒนา แท็บและ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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 ที่ตรงตามเงื่อนไขทั้งสองข้อ
คำอธิบายโค้ด VBA
With ThisWorkbook.Worksheets("AND")
.Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
รหัสชิ้นนี้
- ขั้นแรกให้ประกาศ ชื่อเวิร์กชีต ที่เราจะร่วมงานด้วย (“และ ” คือชื่อแผ่นงานสำหรับชุดข้อมูลของเรา) คุณต้องเขียนชื่อชีตตามชุดข้อมูลของคุณ
- หลังจากนั้น กรองคอลัมน์ B เริ่มที่ เซลล์ B4 ตามเกณฑ์หลายเกณฑ์ที่เก็บไว้ ใน เซลล์ E4 และ E5 ด้วย xlAnd โอเปอเรเตอร์
- จากนั้น ออก แผ่นงาน .
อ่านเพิ่มเติม: [แก้ไข]:วิธีการกรองอัตโนมัติของคลาสช่วงล้มเหลว (5 โซลูชัน)
3. ใช้มาโครกับตัวกรองอัตโนมัติด้วยตัวดำเนินการ OR บนคอลัมน์เดียวกันใน Excel
xlOR โอเปอเรเตอร์ใน Excel ทำงานด้วยสองเกณฑ์ ไม่เหมือนกับ xlAND จะส่งกลับค่าที่ ปฏิบัติตามเกณฑ์ใดๆ .
ตอนนี้ ให้พิจารณาชุดข้อมูลต่อไปนี้ คอลัมน์ B ประกอบด้วย ตัวเลขสุ่ม และเราแทรก สองเงื่อนไขในช่วง D4:E5 . เงื่อนไขคือ คอลัมน์ B ต้องกรองด้วยตัวเลขที่ มากกว่าหรือเท่ากับ 12 (ค่าที่เก็บไว้ใน เซลล์ E4 ) หรือน้อยกว่าหรือเท่ากับ 7 (ค่าที่เก็บไว้ใน เซลล์ E5 ). เราจะกรอง คอลัมน์ B ตามเงื่อนไขเหล่านั้นด้วย OR Operator ใน Excel VBA .
มาดูขั้นตอนการทำกันเลย
ขั้นตอน:
- ดังที่แสดงก่อนหน้านี้ เปิด Visual Basic Editor จาก นักพัฒนา แท็บและ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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 .
คำอธิบายโค้ด VBA
With ThisWorkbook.Worksheets("OR")
.Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
รหัสชิ้นนี้
- ขั้นแรกให้ประกาศ ชื่อเวิร์กชีต ที่เราจะร่วมงานด้วย (“OR ” คือชื่อแผ่นงานสำหรับชุดข้อมูลของเรา) คุณต้องเขียนชื่อชีตตามชุดข้อมูลของคุณ
- หลังจากนั้น กรองคอลัมน์ B เริ่มที่ เซลล์ B4 ตามเกณฑ์หลายเกณฑ์ที่เก็บไว้ ใน เซลล์ E4 และ E5 ด้วย xlOr โอเปอเรเตอร์
- จากนั้น ออก แผ่นงาน .
อ่านเพิ่มเติม: วิธีการกรองอัตโนมัติและคัดลอกแถวที่มองเห็นได้ด้วย Excel VBA
4. ฝัง VBA ลงในตัวกรองอัตโนมัติตามค่าข้อความหลายค่าในฟิลด์เดียวกัน
ดูชุดข้อมูลต่อไปนี้ คอลัมน์ B ประกอบด้วย ชื่อประเทศ . เราจะกรองคอลัมน์นี้ตามประเทศที่เราจะฮาร์ดโค้ดในมาโคร เราจะกรองคอลัมน์อัตโนมัติ ตามชื่อประเทศสองชื่อ ออสเตรเลีย และอังกฤษ .
ขั้นตอนการดำเนินการดังแสดงด้านล่าง
ขั้นตอน:
- ขั้นแรก เปิด Visual Basic Editor จาก นักพัฒนา แท็บและ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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 ซึ่งเต็มไปด้วยหลายประเทศในขณะนี้ ถูกกรอง มีเพียงสองชื่อประเทศ – ออสเตรเลีย และ อังกฤษ – ที่เราให้ไว้ในรหัส
คำอธิบายโค้ด VBA
Dim iArray As Variant
กำหนด ตัวแปร สำหรับอาร์เรย์ .
iArray = Array("Australia", "England")
ร้านค้า เกณฑ์ข้อความ ขึ้นอยู่กับการกรอง จะดำเนินการใน อาร์เรย์ . ที่กำหนดไว้ .
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
คอลัมน์ตัวกรอง ข เริ่มที่ เซลล์ B4 ตาม เกณฑ์หลายข้อความที่ฮาร์ดโค้ด ใน อาร์เรย์ . ที่กำหนดไว้ .
อ่านเพิ่มเติม: วิธีการกรองค่าอัตโนมัติไม่เท่ากับค่าที่แน่นอนด้วย VBA ใน Excel
บทสรุป
สรุป บทความนี้แสดงให้คุณเห็น 4 วิธีในการ ตัวกรองอัตโนมัติที่มีหลายเกณฑ์ในฟิลด์เดียวกัน (คอลัมน์) ใน Excel ด้วย มาโคร VBA . ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับคุณมาก อย่าลังเลที่จะถามคำถามใด ๆ เกี่ยวกับหัวข้อนี้
บทความที่เกี่ยวข้อง
- ตัวกรองอัตโนมัติ VBA:เรียงลำดับจากน้อยไปหามาก (3 วิธี)
- Excel VBA:ลบตัวกรองอัตโนมัติหากมีอยู่ (7 ตัวอย่าง)