เมื่อทำงานกับข้อมูลจำนวนมากและจำเป็นต้องตั้งค่าตัวกรองหลายตัวพร้อมกัน การกรองขั้นสูง ใน Excel มีประโยชน์ นอกจากนี้ยังอาจใช้เพื่อล้างข้อมูลของคุณโดยการลบสำเนา ขณะใช้ตัวกรองขั้นสูง , VBA รหัสนั้นง่ายต่อการดำเนินการ ในบทช่วยสอนนี้ เราจะแสดงวิธีใช้ตัวกรองขั้นสูง VBA สำหรับช่วงเกณฑ์หลายช่วงใน Excel .
5 วิธีที่มีประสิทธิภาพสำหรับตัวกรองขั้นสูง VBA ที่มีหลายเกณฑ์ในช่วงใน Excel
ในส่วนต่อไปนี้ เราจะพูดถึง 5 วิธีการใช้ VBA Advanced Filter สำหรับหลายเกณฑ์ ในตอนแรก คุณอาจต้องรู้ไวยากรณ์ของ VBA Advanced Filter .
ไวยากรณ์ตัวกรองขั้นสูง VBA:
- ตัวกรองขั้นสูง: หมายถึงวัตถุช่วง คุณกำหนดช่วงที่ต้องการใช้ตัวกรองได้
- การดำเนินการ: เป็นอาร์กิวเมนต์ที่จำเป็นซึ่งมีสองตัวเลือก xlFilterInPlace หรือ xlFilterCopy . xlFilterInPlace ใช้เพื่อกรองค่า ณ ตำแหน่งที่ชุดข้อมูลอยู่ xlFilterCopy ใช้เพื่อรับค่าตัวกรองในตำแหน่งอื่นที่ต้องการ
- ช่วงเกณฑ์: แสดงถึงเกณฑ์ที่จะกรองค่า
- CopyToRange: คือตำแหน่งที่คุณจะบันทึกผลการกรองของคุณ
- เอกลักษณ์: เป็นอาร์กิวเมนต์ที่เป็นทางเลือก ใช้ จริง อาร์กิวเมนต์เพื่อกรองเฉพาะค่าที่ไม่ซ้ำ มิฉะนั้น โดยค่าเริ่มต้น จะถือว่า เท็จ .
ในภาพด้านล่าง มีชุดข้อมูลตัวอย่างเพื่อใช้ตัวกรองทั้งหมดที่เราต้องการดำเนินการ
1. ใช้ตัวกรองขั้นสูง VBA สำหรับเกณฑ์ OR ในช่วงใน Excel
ในวิธีแรก เราจะใช้ OR เกณฑ์โดยใช้ ตัวกรองขั้นสูง VBA . สมมติว่า เราต้องการกรองข้อมูลสำหรับชื่อผลิตภัณฑ์ คุกกี้ และ ช็อคโกแลต . เมื่อต้องการใช้ หรือ เกณฑ์ คุณควรวางค่าในแถวต่างๆ ทำตามขั้นตอนด้านล่างเพื่อทำงาน
ขั้นตอนที่ 1:
- กด Alt + F11 เพื่อเปิด มาโคร VBA .
- คลิกที่ แทรก
- เลือก โมดูล
ขั้นตอนที่ 2:
- จากนั้นวาง VBA . ต่อไปนี้ รหัสเพื่อใช้ OR.
Sub Apply_VBA_Advanced_Filter_for_OR_Criteria()
'Declare Variable for dataset range and for criteria range
Dim Dataset_Rng As Range
Dim Criteria_Rng As Range
'Set the location and range of datase range and criteria range
Set Dataset_Rng = Sheets("Sheet1").Range("B4:E11")
Set Criteria_Rng = Sheets("Sheet1").Range("B14:E16")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub
ขั้นตอนที่ 3:
- จากนั้นบันทึกโปรแกรมแล้วกด F5 ที่จะวิ่ง
- ดังนั้น คุณจะได้ผลลัพธ์ที่กรองตามที่แสดงในภาพด้านล่าง
หมายเหตุ เมื่อต้องการย้อนกลับกระบวนการหรือลบตัวกรองทั้งหมดและเรียกใช้ VBA โปรแกรม
Sub Remove_All_Filter()
On Error Resume Next
'command to remove all the filter to show the previous dataset
ActiveSheet.ShowAllData
End Sub
- ด้วยเหตุนี้ คุณจะได้รับชุดข้อมูลเวอร์ชันก่อนหน้า
อ่านเพิ่มเติม:Excel VBA ตัวอย่างตัวกรองขั้นสูงพร้อมเกณฑ์ (6 เกณฑ์)
2. ดำเนินการตัวกรองขั้นสูง VBA สำหรับเกณฑ์ AND ในช่วงใน Excel
คล้ายกับวิธีการก่อนหน้านี้ ตอนนี้เราจะดำเนินการ VBA ตัวกรองขั้นสูงสำหรับ และ เกณฑ์. สมมติว่าเราต้องการทราบคุกกี้ที่มีราคา $0.65 ตามที่แสดงในภาพหน้าจอด้านล่าง สำหรับการใช้ OR เกณฑ์ คุณควรวางค่าในคอลัมน์ต่างๆ เมื่อต้องการใช้ และ ตามหลักเกณฑ์ด้านล่าง
ขั้นตอนที่ 1:
- ในการเปิด มาโคร VBA , กด Alt + F11
- หลังจากเปิด มาโคร VBA วาง VBA . ต่อไปนี้ รหัสในโมดูลใหม่
Sub Apply_VBA_Advanced_Filter_for_AND_Criteria()
'Declare Variable for dataset range and for criteria range
Dim Dataset_Rng As Range
Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
Set Dataset_Rng = Sheets("Sheet2").Range("B4:E11")
Set Criteria_Rng = Sheets("Sheet2").Range("B14:E15")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub
ขั้นตอนที่ 2:
- กด F5 เพื่อเรียกใช้โปรแกรมหลังจากที่คุณได้บันทึกไว้แล้ว
- สุดท้าย รับผลการกรอง
อ่านเพิ่มเติม: VBA เพื่อคัดลอกข้อมูลไปยังชีตอื่นด้วยตัวกรองขั้นสูงใน Excel
3. ใช้ตัวกรองขั้นสูง VBA สำหรับ OR ที่มี AND Criteria ในช่วงใน Excel
คุณยังสามารถใช้ หรือ และ และ เกณฑ์ทั้งสองอย่างรวมกัน ตัวอย่างเช่น คุณต้องการรับค่าสำหรับ คุกกี้ หรือ ช็อคโกแลต แต่สำหรับ คุกกี้ มีเกณฑ์อื่น ราคา $0.65 จะถูกนำไปใช้ ทำตามขั้นตอนด้านล่างเพื่อดำเนินการให้เสร็จสิ้น
ขั้นตอนที่ 1:
- วาง VBA ต่อไปนี้ รหัสหลังจากเปิด มาโคร VBA .
Sub Apply_VBA_Advanced_Filter_for_OR_with_AND_Criteria()
'Declare Variable for dataset range and for criteria range
Dim Dataset_Rng As Range
Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
Set Dataset_Rng = Sheets("Sheet3").Range("B4:E11")
Set Criteria_Rng = Sheets("Sheet3").Range("B14:E16")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub
ขั้นตอนที่ 2:
- จากนั้นให้บันทึกโปรแกรมก่อนโดยกด F5 เพื่อเรียกใช้
- ดังนั้น คุณจะพบค่าบางอย่างด้วย และ และ หรือ
อ่านเพิ่มเติม:ใช้ตัวกรองขั้นสูงตามเกณฑ์หลายเกณฑ์ในคอลัมน์เดียวใน Excel
การอ่านที่คล้ายกัน:
- ตัวกรองขั้นสูงพร้อมหลายเกณฑ์ใน Excel (ตัวอย่างที่เหมาะสม 15 ตัวอย่าง)
- Dynamic Advanced Filter Excel (VBA &Macro)
- วิธีใช้ตัวกรองขั้นสูงใน VBA (หลักเกณฑ์ทีละขั้นตอน)
- ตัวกรองขั้นสูงที่มีช่วงเกณฑ์ใน Excel (18 แอปพลิเคชัน)
- ตัวกรองขั้นสูงของ Excel ไม่ทำงาน (2 เหตุผลและวิธีแก้ไข)
4. ใช้ตัวกรองขั้นสูง VBA สำหรับค่าที่ไม่ซ้ำกับหลายเกณฑ์ใน Excel
นอกจากนี้ หากคุณมีข้อมูลซ้ำในชุดข้อมูล คุณสามารถลบออกได้ในขณะกรอง เราจะเพิ่ม ไม่ซ้ำ อาร์กิวเมนต์ จริง เพื่อรับเฉพาะค่าที่ไม่ซ้ำกันและลบรายการที่ซ้ำกัน ทำตามคำแนะนำที่ระบุไว้
ขั้นตอนที่ 1:
- ขั้นแรก เปิด VBA มาโครโดยกด Alt + F11.
- วาง VBA ต่อไปนี้ รหัสในโมดูลใหม่
Sub Apply_VBA_Advanced_Filter_for_Unique_Values()
'Declare Variable for dataset range and for criteria range
Dim Dataset_Rng As Range
Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
Set Dataset_Rng = Sheets("Sheet4").Range("B4:E11")
Set Criteria_Rng = Sheets("Sheet4").Range("B14:E16")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng, Unique:=True
End Sub
ขั้นตอนที่ 2:
- จากนั้น กด F5 เพื่อเรียกใช้โปรแกรมหลังจากบันทึก
- ดังนั้น คุณจะได้รับค่าเฉพาะเฉพาะเท่านั้น
อ่านเพิ่มเติม:วิธีใช้ตัวกรองขั้นสูงสำหรับระเบียนที่ไม่ซ้ำเฉพาะใน Excel
5. ดำเนินการ VBA Advanced Filter สำหรับกรณีที่มีเงื่อนไข
นอกจากวิธีการก่อนหน้านี้ คุณยังสามารถใช้เงื่อนไขกับสูตรได้อีกด้วย ตัวอย่างเช่น เราต้องการหา ราคารวม ซึ่งมากกว่า $100 . ให้ทำตามขั้นตอนดังนี้
ขั้นตอนที่ 1:
- ประการแรก เพื่อเปิด VBA Macro , กด Alt + F11 .
- เลือก โมดูล ใหม่ และวาง รหัส VBA . ต่อไปนี้ .
Sub Apply_VBA_Advanced_Filter_for_Formula()
'Declare Variable for dataset range and for criteria range
Dim Dataset_Rng As Range
Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11")
Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub
ขั้นตอนที่ 2:
- ขั้นที่สอง บันทึกโปรแกรมแล้วกดปุ่ม F5 เพื่อดูผลลัพธ์
หมายเหตุ นอกจากนี้ คุณสามารถรับผลลัพธ์ในพื้นที่ที่เหมาะสมไม่ว่าจะอยู่ในช่วงใหม่หรือในเวิร์กชีตใหม่โดยใช้ xlFilterCopy การกระทำ. เพียงวาง VBA รหัสและเรียกใช้เพื่อให้ได้ผลลัพธ์ใน Sheet6 อยู่ในช่วง B4:E11 .
'Declare Variable for dataset range and for criteria range
Dim Dataset_Rng As Range
Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11")
Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Criteria_Rng, CopyToRange:=Sheets("Sheet6").Range("B4:E11")
End Sub
- ดังนั้น ดูผลลัพธ์สุดท้ายในเวิร์กชีตใหม่ 'Sheet6' .
อ่านเพิ่มเติม:วิธีใช้ตัวกรองขั้นสูงหากช่วงเกณฑ์มีข้อความใน Excel
บทสรุป
เพื่อสรุป ฉันหวังว่าคุณจะเข้าใจวิธีใช้ VBA ตัวกรองขั้นสูงใน Excel เพื่อกรองช่วงเกณฑ์หลายช่วง ควรใช้วิธีการทั้งหมดเหล่านี้ในการสอนและฝึกฝนกับข้อมูลของคุณ ดูหนังสือฝึกหัดและนำสิ่งที่คุณได้เรียนรู้ไปใช้ เนื่องจากการสนับสนุนที่สำคัญของคุณ เราจึงมีแรงบันดาลใจที่จะนำเสนอการสัมมนาในลักษณะนี้ต่อไป
หากคุณมีคำถามใด ๆ โปรดอย่าลังเลที่จะติดต่อเรา โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรในส่วนความคิดเห็นด้านล่าง
ความเป็นเลิศ เจ้าหน้าที่จะตอบคำถามของคุณโดยเร็วที่สุด
อยู่กับเราและเรียนรู้ต่อไป
บทความที่เกี่ยวข้อง
- ตัวกรองขั้นสูงของ Excel [หลายคอลัมน์และเกณฑ์ โดยใช้สูตรและสัญลักษณ์แทน]
- วิธีใช้ตัวกรองขั้นสูงเพื่อยกเว้นเซลล์ว่างใน Excel (3 เคล็ดลับง่ายๆ)
- Excel VBA:ตัวกรองขั้นสูงที่มีหลายเกณฑ์ในช่วง (5 วิธี)
- วิธีการใช้ตัวกรองขั้นสูงเพื่อคัดลอกไปยังตำแหน่งอื่นใน Excel