Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

โดยทั่วไปเราใช้ ตัวกรอง (Filters) ใน Microsoft Excel เมื่อต้องการแยกข้อมูลเฉพาะจากข้อมูลจำนวนมาก ตัวกรองขั้นสูง (Advanced Filter) เพิ่มความสามารถพิเศษเพิ่มเติม Excel VBA ก็มีตัวเลือกตัวกรองขั้นสูงนี้เช่นกัน บทความนี้จะแสดงตัวอย่างการใช้ Excel VBA กับเกณฑ์ตัวกรองขั้นสูง

6 ตัวอย่าง Excel VBA Advanced Filter พร้อมเกณฑ์การกรอง

จะแสดง 6 ตัวอย่างของเกณฑ์การกรองขั้นสูงด้วย Excel VBA ในส่วนนี้

เราจะใช้ชุดข้อมูลต่อไปนี้สำหรับการสาธิต

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ตัวอย่างที่ 1: Excel VBA กรองข้อมูลในตำแหน่งเดิม

เราจะใช้ VBA Macro เพื่อกรองข้อมูลตามเกณฑ์และวางข้อมูลที่กรองแล้วไว้ที่ตำแหน่งเดิม

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ในช่วง B16:E17 เราตั้งค่าเกณฑ์การกรอง

ขั้นตอนที่ 1:

  • ไปที่แท็บ Developer
  • คลิก Record Macro จากริบบอน
  • กล่องโต้ตอบใหม่จะปรากฏ ตั้งชื่อ Macro แล้วกด OK

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 2:

  • คลิก Macros บนริบบอน
  • เลือก Macro และคลิก Step Into

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 3:

  • คัดลอกโค้ด VBA ต่อไปนี้และวางในโมดูลคำสั่ง
Sub Filter_Criteria()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter xlFilterInPlace, criteria
End Sub

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 4:

  • กดปุ่ม F5 เพื่อรันโค้ด

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

เราตั้งเกณฑ์ให้แสดงยอดขายของสาขา Chicago เท่านั้น และนี่คือผลลัพธ์

ข้อมูลและเกณฑ์ของเราอยู่ในแผ่นงานเดียวกัน

อ่านเพิ่มเติม: วิธีใช้ Advanced Filter คัดลอกไปยังตำแหน่งอื่นใน Excel

ตัวอย่างที่ 2: Excel VBA Advanced Filter เมื่อข้อมูลและเกณฑ์อยู่ในแผ่นงานต่างกัน

ในตัวอย่างนี้จะแสดงวิธีจัดการเมื่อเกณฑ์และข้อมูลอยู่ในแผ่นงานที่ต่างกัน

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ข้อมูลของเราอยู่ในแผ่นชื่อ Criteria_Different_Sheet และเกณฑ์อยู่ในแผ่น Criteria

ขั้นตอนที่ 1:

  • กด Alt+F11 เพื่อเข้าสู่โมดูลคำสั่ง
  • วางโค้ดด้านล่างในโมดูลคำสั่ง
Sub Filter_Criteria_2()
    Dim data As Range
    Dim criteria As Range
    Set data = Sheets("Criteria_Different_Sheet").Range("B4:E14")
    Set criteria = Sheets("Criteria").Range("B4:E5")
    data.AdvancedFilter xlFilterInPlace, criteria
End Sub

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 2:

  • กด F5 เพื่อรันโค้ด

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

เราสามารถกรองข้อมูลได้แม้เกณฑ์จะอยู่ในแผ่นงานอื่น

อ่านเพิ่มเติม: ใช้ Advanced Filter ตามเกณฑ์หลายอย่างในคอลัมน์เดียวใน Excel

ตัวอย่างที่ 3: Excel VBA กรองข้อมูลและวางในตำแหน่งต่างกันในแผ่นงานเดียวกัน

หากต้องการวางข้อมูลที่กรองแล้วในตำแหน่งอื่น ให้ทำตามขั้นตอนด้านล่าง

ขั้นตอนที่ 1:

  • กด Alt+F11 เพื่อเข้าสู่โมดูลคำสั่ง
  • เขียนโค้ดต่อไปนี้ในโมดูลคำสั่ง
Sub Filter_Criteria_3()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=criteria, CopyToRange:=Range("G4:J14")
End Sub

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 2:

  • กดปุ่ม F5 และโค้ดจะทำงาน

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

เห็นได้ว่าข้อมูลที่กรองแล้วถูกวางในตำแหน่งอื่น คำสั่ง CopyToRange ระบุตำแหน่งปลายทางที่แตกต่าง

เนื้อหาเกี่ยวข้อง: วิธีใช้ Advanced Filter คัดลอกข้อมูลไปยังแผ่นงานอื่นใน Excel

บทความคล้ายกัน:

  • Excel VBA: Advanced Filter พร้อมเกณฑ์หลายอย่างในช่วง (5 วิธี)
  • วิธีใช้ Advanced Filter เพื่อไม่นับเซลล์ว่างใน Excel (3 เทคนิคง่าย)
  • Excel Advanced Filter [หลายคอลัมน์ & เกณฑ์, ใช้สูตร & กับ Wildcards]

ตัวอย่างที่ 4: กรองเฉพาะข้อมูลที่ไม่ซ้ำกันด้วย Excel VBA

เราสามารถดึงข้อมูลที่ไม่ซ้ำกัน (Unique) ได้จาก Excel VBA Advanced Filter ในกระบวนการนี้ จะเหลือเฉพาะครั้งแรกที่พบ (1st occurrence) และครั้งที่ 2 ขึ้นไปจะถูกลบออก

ขั้นตอนที่ 1:

  • เข้าสู่โมดูลคำสั่งด้วยการกด Alt+F11
  • วางโค้ดต่อไปนี้ในโมดูลคำสั่ง
Sub Filter_Criteria_4()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter xlFilterInPlace, criteria, , True
End Sub

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 2:

  • รันโค้ดโดยกด F5

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

เราเครื่องหมายการเกิดครั้งแรกด้วยสีเขียว และครั้งที่สองด้วยสีเหลือง หลังรันโค้ด เซลล์สีเหลืองถูกลบออก

อ่านเพิ่มเติม: วิธีใช้ Advanced Filter สำหรับเฉพาะเรคคอร์ดที่ไม่ซ้ำกันใน Excel

ตัวอย่างที่ 5: กรองและลบข้อมูลซ้ำโดยไม่ต้องตั้งเกณฑ์ใน Excel VBA

เราสามารถลบข้อมูลซ้ำได้โดยไม่ต้องตั้งค่าเกณฑ์ ให้ทำตามขั้นตอนด้านล่าง

ขั้นตอนที่ 1:

  • ไปที่โมดูลคำสั่ง VBA โดยกด Alt+F11
  • คัดลอกและวางโค้ดต่อไปนี้ในโมดูลคำสั่ง
Sub Filter_Criteria_5()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    data.AdvancedFilter xlFilterInPlace, , , True
End Sub

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 2:

  • กดปุ่ม F5 และโค้ดจะทำงาน

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ดูที่ชุดข้อมูล เราเครื่องหมายข้อมูลซ้ำไว้ หลังใช้โค้ดแล้ว จะเหลือเพียงครั้งแรกที่พบ และข้อมูลซ้ำอื่นๆ ถูกลบออก

อ่านเพิ่มเติม: Excel Advanced Filter ไม่ทำงาน (2 สาเหตุ & วิธีแก้)

ตัวอย่างที่ 6: ใส่เครื่องหมายเปรียบเทียบในเกณฑ์เพื่อกรองข้อมูล

เราสามารถใช้ตัวดำเนินการ (Operators) ในเกณฑ์เพื่อกรองข้อมูล ให้ทำตามขั้นตอนต่อไปนี้

ขั้นตอนที่ 1:

  • กด Alt+F11 และเข้าสู่โมดูลคำสั่ง
  • วางโค้ดด้านล่างในโมดูล
Sub Filter_Criteria_7()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter xlFilterCopy, criteria, Range("G4:J14")
End Sub

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ขั้นตอนที่ 2:

  • กด F5 เพื่อรันโค้ด

เชี่ยวชาญ Excel VBA: 6 เทคนิค Advanced Filter ขั้นสูงสำหรับการแบ่งข้อมูลอย่างแม่นยำ

ในผลลัพธ์ เราได้ค่าที่มากกว่า $1.00

อ่านเพิ่มเติม: วิธีใช้ Advanced Filter ใน VBA (แนวทางแบบขั้นตอน)

สิ่งที่ควรจำ

  • คอลัมน์ข้อมูลทุกคอลัมน์ต้องมีหัวข้อที่ไม่ซ้ำกัน
  • ไม่ควรมีแถวว่างในชุดข้อมูล

สรุป

ในบทความนี้ เราได้แสดง 6 ตัวอย่างของเกณฑ์การกรองขั้นสูงด้วย Excel VBA หวังว่าจะตอบสนองความต้องการของคุณ โปรดเยี่ยมชมเว็บไซต์ Exceldemy.com และให้คำแนะนำในกล่องความคิดเห็น

บทความเกี่ยวข้อง

  • Advanced Filter พร้อมเกณฑ์หลายอย่างใน Excel (15 ตัวอย่างที่เหมาะสม)
  • Dynamic Advanced Filter Excel (VBA & Macro)
  • Advanced Filter พร้อมช่วงเกณฑ์ใน Excel (18 การประยุกต์ใช้)
  • วิธีใช้ Advanced Filter หากช่วงเกณฑ์มีข้อความใน Excel
  • Excel Advanced Filter: ใช้ "Does Not Contain" (2 วิธี)