เคยต้องกดปุ่มกรอง (AutoFilter) ทุกครั้งที่อยากดูข้อมูลเฉพาะบางส่วนไหมครับ แล้วพอปิด-เปิดไฟล์ใหม่หรือมีคนมาแก้ตัวกรองทับ ข้อมูลที่กรองไว้ก็หายไปต้องมานั่งกรองใหม่ทุกที ปัญหานี้แก้ได้ด้วยสูตร FILTER ที่ดึงเฉพาะแถวที่ตรงเงื่อนไขออกมาเป็นชุดข้อมูลใหม่โดยอัตโนมัติ อัปเดตเองทันทีที่ต้นฉบับเปลี่ยน บทความนี้จะพาไปดู syntax พร้อมตัวอย่างจำลองให้เห็นภาพจริง
FILTER คืออะไร ใช้งานยังไง
FILTER เป็นสูตรกลุ่ม Dynamic Array ที่มีเฉพาะใน Excel 365 และ Excel 2021 ขึ้นไป ทำหน้าที่ดึงเฉพาะแถวที่ตรงเงื่อนไขที่กำหนดออกมาแสดงเป็นชุดใหม่ ไม่ต้องลากสูตรหรือกดปุ่มกรองเอง รูปแบบสูตรคือ
=FILTER(array, include, [if_empty])
- array — ช่วงข้อมูลทั้งหมดที่ต้องการดึงมากรอง
- include — เงื่อนไขที่ใช้ตรวจสอบแต่ละแถว (ต้องเป็นช่วงที่มีจำนวนแถวเท่ากับ array)
- if_empty — ข้อความที่ให้แสดงถ้าไม่มีแถวไหนตรงเงื่อนไขเลย (ใส่หรือไม่ใส่ก็ได้ แต่แนะนำให้ใส่ไว้เสมอ)
=FILTER(A2:C7,B2:B7="ส.ค.","ไม่มีรายการ")| A | B | C | |
|---|---|---|---|
| 1 | รายการ | เดือน | จำนวนเงิน |
| 2 | ค่าไฟ | ส.ค. | 1,200 |
| 3 | ค่าเน็ต | ก.ค. | 590 |
| 4 | ซื้อของใช้ | ส.ค. | 850 |
| 5 | ค่าน้ำ | ก.ค. | 320 |
| 6 | ค่าเทอมลูก | ส.ค. | 4,500 |
| 7 | ประกันรถ | มิ.ย. | 2,100 |
ในช่อง D2 พิมพ์สูตรครั้งเดียว ผลลัพธ์จะ “ล้น” (spill) ลงมาแสดงเองอัตโนมัติดังตารางถัดไป โดยดึงเฉพาะแถวที่คอลัมน์เดือนเป็น “ส.ค.” ออกมาเรียงต่อกัน โดยไม่ต้องคัดลอกสูตรทีละแถว
ผลลัพธ์ที่ล้นออกมา (spill)| D | E | F | |
|---|---|---|---|
| 1 | รายการ | เดือน | จำนวนเงิน |
| 2 | ค่าไฟ | ส.ค. | 1,200 |
| 3 | ซื้อของใช้ | ส.ค. | 850 |
| 4 | ค่าเทอมลูก | ส.ค. | 4,500 |
สังเกตว่าได้เฉพาะ 3 แถวที่ตรงเงื่อนไขเท่านั้น และถ้าไปเพิ่มรายการใหม่ในเดือน ส.ค. ที่ตารางต้นฉบับ ผลลัพธ์ตรงนี้จะขยายเพิ่มแถวให้เองทันทีโดยไม่ต้องแก้สูตรใหม่
FILTER ต่างจากปุ่ม AutoFilter ยังไง
หลายคนคุ้นกับการกดปุ่มกรอง (ไอคอนรูปกรวย) บนหัวตารางอยู่แล้ว แต่ FILTER ทำงานต่างออกไปพอสมควร
| รูปแบบ | ทำงานยังไง |
| AutoFilter (ปุ่มกรองปกติ) | แค่ซ่อนแถวที่ไม่ตรงเงื่อนไขไว้ ข้อมูลเดิมยังอยู่ในตำแหน่งเดิมทั้งหมด ต้องกดล้างตัวกรองถึงจะเห็นข้อมูลครบ |
| สูตร FILTER | ดึงข้อมูลที่ตรงเงื่อนไขมาแสดงเป็นชุดใหม่แยกต่างหาก อัปเดตอัตโนมัติเมื่อต้นฉบับเปลี่ยน และเอาผลลัพธ์ไปใช้ต่อกับสูตรอื่น เช่น SUM หรือ COUNT ได้ทันที |
พูดง่ายๆ คือ AutoFilter เหมาะกับการดูข้อมูลชั่วคราวหน้าจอเดียว ส่วน FILTER เหมาะกับการสร้างรายงานหรือสรุปข้อมูลที่ต้องอัปเดตต่อเนื่อง เพราะแยกชุดข้อมูลออกจากต้นฉบับอย่างชัดเจน ไม่กระทบตารางเดิม
ตัวอย่างใช้งานจริง: กรองรายชื่อสมาชิกครอบครัวที่อายุเกิน 18 ปี
อีกสถานการณ์ที่เจอบ่อยในบัญชีครอบครัว เช่น ทำบัญชีสมาชิก Microsoft 365 Family แล้วอยากรู้ว่าใครอายุเกิน 18 ปีบ้าง (เผื่อต้องแยกสิทธิ์การใช้งานหรือแจ้งเตือนเรื่องต่างๆ)
=FILTER(A2:B6,B2:B6>18,"ยังไม่มีใครอายุเกิน")| A | B | |
|---|---|---|
| 1 | ชื่อ | อายุ |
| 2 | พ่อ | 45 |
| 3 | แม่ | 42 |
| 4 | พี่คนโต | 20 |
| 5 | น้องคนกลาง | 15 |
| 6 | น้องเล็ก | 9 |
ผลลัพธ์ที่ล้นออกมา (spill)| E | F | |
|---|---|---|
| 1 | ชื่อ | อายุ |
| 2 | พ่อ | 45 |
| 3 | แม่ | 42 |
| 4 | พี่คนโต | 20 |
จากตารางต้นฉบับ 5 คน สูตรดึงมาแสดงเฉพาะ 3 คนที่อายุเกิน 18 ปี เรียงตามลำดับเดิมโดยอัตโนมัติ ถ้าอยากเรียงจากอายุมากไปน้อยด้วย สามารถใช้ร่วมกับสูตร SORT ได้ เช่น =SORT(FILTER(A2:B6,B2:B6>18),2,-1) ซึ่งเป็นแนวทางเดียวกับที่อธิบายไว้ใน สูตร UNIQUE ดึงรายการไม่ซ้ำอัตโนมัติ ที่รวมสูตร Dynamic Array เข้าด้วยกันได้เช่นกัน
ผสมหลายเงื่อนไขด้วย * (AND) และ + (OR)
จุดเด่นอีกอย่างของ FILTER คือใส่เงื่อนไขได้มากกว่า 1 ข้อในสูตรเดียว โดยใช้เครื่องหมาย * แทนความหมาย “และ” (ต้องตรงทุกเงื่อนไข) และเครื่องหมาย + แทนความหมาย “หรือ” (ตรงข้อใดข้อหนึ่งก็ได้)
=FILTER(A2:C7,(B2:B7="ส.ค.")*(C2:C7>800),"ไม่มีรายการ")| A | B | C | |
|---|---|---|---|
| 1 | รายการ | เดือน | จำนวนเงิน |
| 2 | ค่าไฟ | ส.ค. | 1,200 |
| 3 | ค่าเน็ต | ก.ค. | 590 |
| 4 | ซื้อของใช้ | ส.ค. | 850 |
| 5 | ค่าน้ำ | ก.ค. | 320 |
| 6 | ค่าเทอมลูก | ส.ค. | 4,500 |
| 7 | ประกันรถ | มิ.ย. | 2,100 |
ตัวอย่างนี้ตั้งเงื่อนไข “ต้องเป็นเดือน ส.ค. และ จำนวนเงินมากกว่า 800″ พร้อมกัน ผลลัพธ์ที่ล้นออกมาจะเหลือแค่รายการที่ผ่านทั้งสองเงื่อนไข
ผลลัพธ์ที่ล้นออกมา (spill)| E | F | G | |
|---|---|---|---|
| 1 | รายการ | เดือน | จำนวนเงิน |
| 2 | ค่าไฟ | ส.ค. | 1,200 |
| 3 | ค่าเทอมลูก | ส.ค. | 4,500 |
ถ้าอยากเปลี่ยนเป็นแบบ “หรือ” เช่น เอารายการที่เป็นเดือน ส.ค. หรือ จำนวนเงินมากกว่า 2,000 ก็แค่เปลี่ยนเครื่องหมาย * เป็น + ในสูตรเดียวกัน: =FILTER(A2:C7,(B2:B7="ส.ค.")+(C2:C7>2000),"ไม่มีรายการ")
ข้อควรระวังเวลาใช้ FILTER
- ต้องใช้ Excel 365 หรือ 2021 ขึ้นไป — ถ้าเปิดไฟล์ด้วย Excel 2019 หรือรุ่นเก่ากว่า จะเจอ
#NAME?เพราะโปรแกรมไม่รู้จักสูตรนี้ ต้องอัปเดตเป็น Microsoft 365 ก่อนถึงจะใช้ได้ - ถ้าไม่มีแถวไหนตรงเงื่อนไขเลย จะได้ error
#CALC!— เพราะ FILTER หาผลลัพธ์ไม่ได้แม้แต่แถวเดียว ควรใส่ค่าif_emptyกันไว้เสมอ เช่น ใส่ข้อความ “ไม่มีรายการ” แทนที่จะปล่อยว่าง จะได้ไม่ตกใจเวลาเจอ error - ห้ามมีข้อมูลอื่นขวางพื้นที่ที่สูตรจะล้นลงมา — ถ้ามีตัวเลขหรือข้อความอยู่ในเซลล์ที่ผลลัพธ์ต้องล้นผ่าน จะเจอ error
#SPILL!ต้องเคลียร์พื้นที่ด้านล่าง/ด้านข้างเซลล์สูตรให้ว่างไว้ก่อน - array กับ include ต้องมีจำนวนแถว (หรือคอลัมน์) เท่ากัน ไม่งั้นจะเจอ error
#VALUE!เพราะ Excel จับคู่แถวไม่ได้
สรุป
FILTER คือสูตรที่ช่วยดึงข้อมูลตามเงื่อนไขออกมาเป็นชุดใหม่แบบอัตโนมัติ ต่างจาก AutoFilter ตรงที่ไม่แก้ไขตารางต้นฉบับ อัปเดตผลลัพธ์เองทุกครั้งที่ข้อมูลเปลี่ยน และเอาไปต่อยอดกับสูตรอื่นได้ง่าย เหมาะมากกับงานทำบัญชีรายรับรายจ่ายหรือดูข้อมูลสมาชิกในครอบครัว ใครที่อยากปูพื้นฐานสูตร Excel เพิ่มเติม แนะนำให้อ่านต่อที่ 10 สูตร Excel พื้นฐานที่ต้องรู้ไว้ใช้ทำงานประจำวัน เพื่อใช้งานร่วมกับ FILTER ได้ครบสูตรยิ่งขึ้น