Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

ตัวกรองอัตโนมัติ ของ 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 (4 วิธี)

เรามาดูกันว่าจะทำอย่างไรกับ VBA ใน Excel

ขั้นตอน:

  • ในตอนแรก ให้กด Alt + F11 บนแป้นพิมพ์ของคุณหรือไปที่แท็บ นักพัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

  • ถัดไป ในหน้าต่างรหัสป๊อปอัป จากแถบเมนู ให้คลิก แทรก -> โมดูล .

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

  • จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

  • ตอนนี้ กด F5 บนแป้นพิมพ์หรือจากแถบเมนู ให้เลือก เรียกใช้ -> เรียกใช้ Sub/UserForm . คุณยังสามารถคลิกที่ไอคอนการวิ่งขนาดเล็ก ในแถบเมนูย่อยเพื่อเรียกใช้มาโคร

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

หลังจากรันโค้ดสำเร็จแล้ว ให้ดูภาพต่อไปนี้เพื่อดูผลลัพธ์

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

ดังที่คุณเห็นจากภาพด้านบน คอลัมน์ 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 .

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

ขั้นตอนในการรับมีดังนี้

ขั้นตอน:

  • เหมือนเมื่อก่อน เปิด 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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

  • หลังจากนั้น วิ่ง มาโครดังที่เราแสดงให้คุณเห็นในส่วนด้านบน ผลลัพธ์จะปรากฏในภาพด้านล่าง

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

หลังจากรันโค้ดสำเร็จแล้ว คอลัมน์ 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 .

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

มาดูขั้นตอนการทำกันเลย

ขั้นตอน:

  • ดังที่แสดงก่อนหน้านี้ เปิด 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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

  • ต่อมา เรียกใช้ มาโครแล้วดูที่ภาพต่อไปนี้เพื่อดูผลลัพธ์

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

หลังจากรันโค้ดสำเร็จแล้ว คอลัมน์ 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 ประกอบด้วย ชื่อประเทศ . เราจะกรองคอลัมน์นี้ตามประเทศที่เราจะฮาร์ดโค้ดในมาโคร เราจะกรองคอลัมน์อัตโนมัติ ตามชื่อประเทศสองชื่อ ออสเตรเลีย และอังกฤษ .

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

ขั้นตอนการดำเนินการดังแสดงด้านล่าง

ขั้นตอน:

  • ขั้นแรก เปิด 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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

  • ต่อไป เรียกใช้ มาโคร ตอนนี้ ดูภาพต่อไปนี้เพื่อดูผลลัพธ์

VBA เพื่อกรองอัตโนมัติพร้อมหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)

เป็นผลให้ คอลัมน์ 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 ตัวอย่าง)