ฟังก์ชัน FILTER ใน Microsoft Excel เป็นฟังก์ชันสำคัญที่สุดที่ต้องเชี่ยวชาญ ไม่มีมัน จะหาข้อมูลที่ต้องการยากมาก นี่คือ Crash course ใช้ FILTER ใน Excel
ควรทราบ: FILTER ไม่ใช่วิธีเดียวกรองข้อมูล มี Auto Filter และ Advanced Filter ทำได้เหมือนกัน แต่มีข้อแตกต่างสำคัญ จะอภิปรายในบทความ
ฟังก์ชัน FILTER คืออะไร?
Functions/Excel Formulas เป็นหัวใจของ Excel: หาค่าเฉลี่ยข้อมูลมาก สร้างกราฟ Bell curve ฯลฯ แต่ละฟังก์ชันมี Syntax ตรวจสอบได้พิมพ์ชื่อฟังก์ชันใน Excel
Excel FILTER function "กรอง" ค่าของ Range ที่ระบุ ตามเงื่อนไข Range และ Conditions ใส่พร้อมฟังก์ชัน → ปรับแต่งได้ยืดหยุ่น
พารามิเตอร์ถูกต้อง → ดึงข้อมูลที่ต้องการพอดี ไม่ต้องเลื่อนหา Manual Output อยู่ใน Cell → Chain ฟังก์ชันอื่น คำนวณ/สร้างกราฟต่อได้
ทำไม FILTER ดีกว่า Advanced Filter?
มือใหม่ Excel ชอบ Built-in Data filtering tools แทนการเรียน Syntax Auto Filter ง่าย: Exclude columns, ตั้ง Criteria จาก Menu Advanced Filter: ใช้ Multiple criteria สำหรับ Complex filtering
ทำไมต้องใช้ FILTER function?
ข้อได้เปรียบหลัก: Functions เป็น Dynamic (ไดนามิก) Auto/Advanced Filter ให้ผลลัพธ์ครั้งเดียว (One-off) ไม่เปลี่ยนเมื่อ Source data เปลี่ยน FILTER function → อัปเดตผลลัพธ์อัตโนมัติ เมื่อข้อมูลเปลี่ยน
Syntax ของ FILTER Function
Syntax ง่าย:
=FILTER(array, include, [if_empty])
- Array: ช่วงสี่เหลี่ยมของ Spreadsheet ระบุ Top-left cell ถึง Bottom-right cell เช่น A3:E10 (คอลัมน์ A-E, แถว 3-10)
- Include: เงื่อนไข หรือ Boolean array ใส่เป็น Expression ประเมินค่า Range (มักเป็นคอลัมน์) คืน TRUE/FALSE เช่น A3:A10="Pass" คืน TRUE ถ้า Cell match string
- [if_empty]: ค่าที่คืนเมื่อไม่มีแถว Match เงื่อนไข เช่น "No Records Found"
Related: ต้องการดูว่า Sample data ตรง Dataset ใหญ่แค่ไหน? อ่านคู่มือคำนวณ Standard Error ใน Excel
รู้ Syntax แล้ว ลองใช้ FILTER จริง
Sample data: Array A2:F11 คะแนน Biology 10 คน พร้อม Normal distribution
เขียนฟังก์ชันกรองจากคะแนนสอบ (คอลัมน์ D) คืนเฉพาะคะแนน < 30 Syntax:
=FILTER(A2:F11, D2:D11<30, "No Matches Found")
ผลลัพธ์เป็น Subset ของ Array ใช้ฟังก์ชันใน Cell ที่มีพื้นที่ด้านล่างพอ เราจะทำใต้ตารางเดิม:
ได้ผลลัพธ์ที่คาดหวัง: รายการคะแนน < 30 แสดงในรูปแบบตารางเดียวกัน
ไม่จำกัดเงื่อนไขเดียว ใช้ AND operator (*) Chain Multiple expressions เป็นพารามิเตอร์เดียว → Complex filter
ลองกรองคะแนนระหว่าง 30-70 Syntax และผลลัพธ์:
=FILTER(A2:F11, (D2:D11>30)*(D2:D11<70), "No Matches Found")
Non-exclusive criteria: ใช้ OR operator (+) Match ถ้าเงื่อนไขไหนตัวไหน TRUE
หา Outliers: คะแนน < 15 หรือ > 70
=FILTER(A2:F11, (D2:D11<30)+(D2:D11>70), "No Records Found")
แทนค่าเดียว/สตริง ตอนไม่เจอ ให้ระบุค่าทุกคอลัมน์ → Output format คงที่
ลองเงื่อนไขเท็จ ดู Default format:
=FILTER(A2:F11, D2:D11>90, "No Matches Found")
ผลลัพธ์แค่ String เดียว ไม่สอดคล้อง Format ที่คาดหวัง ปัญหา ถ้าเอา Result ไปคำนวณต่อ
ลองใส่ Default values ทุกคอลัมน์ ใส่ค่าคั่นคอมม่า ใน Curly braces:
=FILTER(A2:F11, D2:D11>90, {"No Record", "No Record", "No Record", 0})
ผลลัพธ์สวยงาม สอดคล้อง Format Spreadsheet
FILTER Function คุ้มค่าหรือไม่?
แม้ใช้ Excel แค่จัดเก็บบันทึก ไม่อยากคำนวณซับซ้อน FILTER ยังคงเป็นฟังก์ชันน้อยๆ ที่ควรเรียน เพราะ Workbook ใหญ่ → หาข้อมูล Manual เจ็บปวด Auto/Advanced Filter ใช้งานได้ แต่ Function สะดวกกว่า Long-run: ผลลัพธ์อัปเดตเอง + Chain ฟังก์ชันอื่นได้