FILTER
อัปเดต 24 ก.ย. 2569 · ตรวจ syntax และเวอร์ชันกับเอกสารของ Microsoft · ผลในตัวอย่างตรวจด้วยเครื่องมือคำนวณ 2 ชุด บางช่องใช้ผลจาก LibreOffice และตรงกับตัวคำนวณของหน้าเว็บ
FILTER คืออะไร
ดึงทุกแถวที่ตรงเงื่อนไขออกมาเป็นตารางใหม่ ใส่ได้หลายเงื่อนไข และอัปเดตเองเมื่อข้อมูลหรือเงื่อนไขเปลี่ยน
ใช้เมื่อไหร่
- ดึงคำสั่งซื้อของภาค พนักงาน หรือช่องทางที่เลือก ไปทำรายงานแยก
- ทำตารางที่อัปเดตเองเมื่อเปลี่ยนเงื่อนไขใน Dropdown
- กรองหลายเงื่อนไขพร้อมกัน แล้วเรียงหรือนับต่อในสูตรเดียว
รูปแบบสูตร
Argument แต่ละตัว
ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น
| Argument | จำเป็นไหม | ความหมาย |
|---|---|---|
| array | จำเป็น | ช่วงหรือ array ที่ต้องการกรอง เลือกเฉพาะคอลัมน์ที่อยากเห็นก็ได้ |
| include | จำเป็น | เงื่อนไขที่ได้ TRUE/FALSE ต้องสูง (หรือกว้าง) เท่ากับ array |
| [if_empty] | ไม่บังคับ | ค่าที่แสดงเมื่อไม่มีแถวที่ตรง ถ้าไม่ใส่จะได้ #CALC! |
ลองเลย: ตัวอย่างที่เปลี่ยนค่าได้
ข้อมูลชุดเดียวกับไฟล์ฝึก เปลี่ยนค่าในช่องกรอก หรือคลิกตัวเลขในตารางเพื่อแก้ แล้วดูผลลัพธ์เปลี่ยนทันที กดถัดไปเพื่อดูว่า Excel คิดทีละขั้นอย่างไร สีของช่วงในตารางตรงกับสีในสูตร
include = B5:B14=I4 ได้ TRUE/FALSE ทีละแถว FILTER เก็บเฉพาะแถวที่เป็น TRUE แล้ว spill ลงมาเอง
| แถว | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 4 | เลขที่คำสั่งซื้อ | ภูมิภาค | ช่องทาง | สินค้า | พนักงานขาย | ยอดสุทธิ (บาท) | ||
| 5 | SF-2025-0734 | ตะวันออก | Traditional Trade | น้ำปลาแท้ 700 มล. (ลัง 12) | สุภาพร หงษ์ทอง | 355,320 | ||
| 6 | SF-2025-0738 | ใต้ | Modern Trade | น้ำมะพร้าว 100% 330 มล. (แพ็ค 12) | กมลชนก พงษ์พานิช | 1,235,098 | ||
| 7 | SF-2025-0739 | กลาง | Traditional Trade | น้ำดื่มสยามเฟรช 600 มล. (แพ็ค 12) | นันทิดา กิจเจริญ | 22,878 | ||
| 8 | SF-2025-0741 | กลาง | Traditional Trade | โซดาสยามเฟรช 325 มล. (แพ็ค 24) | นันทิดา กิจเจริญ | 298,740 | ||
| 9 | SF-2025-0746 | กลาง | Online | บะหมี่กึ่งสำเร็จรูป รสต้มยำกุ้ง (ลัง 30) | อรทัย พิทักษ์วงศ์ | 51,062 | ||
| 10 | SF-2025-0753 | กลาง | Food Service | แกงเขียวหวานไก่พร้อมทาน (กล่อง 12) | อรทัย พิทักษ์วงศ์ | 910,714 | ||
| 11 | SF-2025-0756 | ตะวันออก | Modern Trade | เวเฟอร์ช็อกโกแลต 100 ก. (กล่อง 24) | สุภาพร หงษ์ทอง | 1,057,572 | ||
| 12 | SF-2025-0757 | ตะวันออกเฉียงเหนือ | Online | น้ำจิ้มไก่ 350 มล. (ลัง 24) | ธีรพงษ์ ฉัตรแก้ว | 100,296 | ||
| 13 | SF-2025-0771 | กลาง | Online | กาแฟพร้อมดื่ม เอสเปรสโซ 240 มล. (แพ็ค 24) | สุภาพร หงษ์ทอง | 126,000 | ||
| 14 | SF-2025-0784 | เหนือ | Modern Trade | น้ำส้มคั้น 100% 350 มล. (แพ็ค 12) | กมลชนก พงษ์พานิช | 289,275 | ||
| 15 | ผลลัพธ์จากสูตรในช่อง A17 · spill ลงมาเอง | |||||||
| 16 | เลขที่คำสั่งซื้อ | ภูมิภาค | ช่องทาง | สินค้า | พนักงานขาย | ยอดสุทธิ (บาท) | ||
| 17 | SF-2025-0739 | กลาง | Traditional Trade | น้ำดื่มสยามเฟรช 600 มล. (แพ็ค 12) | นันทิดา กิจเจริญ | 22,878 | ||
| 18 | SF-2025-0741 | กลาง | Traditional Trade | โซดาสยามเฟรช 325 มล. (แพ็ค 24) | นันทิดา กิจเจริญ | 298,740 | ||
| 19 | SF-2025-0746 | กลาง | Online | บะหมี่กึ่งสำเร็จรูป รสต้มยำกุ้ง (ลัง 30) | อรทัย พิทักษ์วงศ์ | 51,062 | ||
| 20 | SF-2025-0753 | กลาง | Food Service | แกงเขียวหวานไก่พร้อมทาน (กล่อง 12) | อรทัย พิทักษ์วงศ์ | 910,714 | ||
| 21 | SF-2025-0771 | กลาง | Online | กาแฟพร้อมดื่ม เอสเปรสโซ 240 มล. (แพ็ค 24) | สุภาพร หงษ์ทอง | 126,000 | ||
| 22 | ||||||||
| 23 | ||||||||
| 24 | ||||||||
ขั้นตอนการคำนวณ (3)
- อ่านสูตร: ภาคกลางมี 5 แถว FILTER จึงคืน 5 แถว ครบทุกคอลัมน์ของ A5:F14
- เลือกภาคอื่นใน I4 ผลลัพธ์จะยืดหรือหดตามจำนวนแถวที่ตรงเอง
- include ต้องสูงเท่ากับ array: A5:F14 มี 10 แถว B5:B14 ก็ต้องมี 10 แถว ไม่งั้นได้ #VALUE!
ตัวอย่างทั้งหมด 4 แบบ
- 1ดึงคำสั่งซื้อทั้งแถวของภาคที่เลือก · include = B5:B14=I4 ได้ TRUE/FALSE ทีละแถว FILTER เก็บเฉพาะแถวที่เป็น TRUE แล้ว spill ลงมาเอง
- 2กรองสองเงื่อนไขพร้อมกัน (AND) · (B5:B14=I4)*(F5:F14>=I5) คูณเงื่อนไขทีละแถว ได้ 1 เฉพาะแถวที่ตรงทั้งสองข้อ
- 3กรองแบบหรือ (OR) และแสดงข้อความเมื่อไม่พบ · (B5:B14=I4)+(B5:B14=I5) บวกเงื่อนไข ตรงข้อใดข้อหนึ่งก็ถูกเก็บ ถ้าไม่มีแถวที่ตรงเลย FILTER แสดงค่าใน if_empty
- 4ดึงเฉพาะคอลัมน์ที่ต้องการ แล้วเรียงยอด · FILTER จากช่วง E5:F14 ได้แค่พนักงานกับยอดสุทธิ SORT เรียงยอดจากมากไปน้อย และ ROWS นับจำนวนคำสั่งซื้อ
ข้อผิดพลาดที่พบบ่อย
เคล็ดลับจากห้องเรียน
ใช้กับ Excel ของคุณได้ไหม
| เวอร์ชัน | Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|---|
| FILTER |
ใช้ Excel 2016 หรือ 2019 ให้ใช้สูตรเหล่านี้แทน ได้ผลเท่ากับตัวอย่างที่ระบุ และมีในชีต “Excel 2016-2019” ของไฟล์ฝึก ต่างจาก FILTER ตรงที่ผลลัพธ์ไม่ spill เอง ต้องลากสูตรลงให้พอกับจำนวนรายการ (ไม่ต้องกด Ctrl + Shift + Enter)
| แทนตัวอย่าง | สูตรทางเลือก |
|---|---|
| ตัวอย่าง 1 เลขที่คำสั่งซื้อ | =IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($B$5:$B$14)/($B$5:$B$14="กลาง"),ROWS($A$5:A5))),"") แล้วลากลง |
| ตัวอย่าง 1 ยอดสุทธิ | =IFERROR(INDEX($F:$F,AGGREGATE(15,6,ROW($B$5:$B$14)/($B$5:$B$14="กลาง"),ROWS($A$5:A5))),"") แล้วลากลง |
Office 2016 และ 2019 หมดระยะสนับสนุนตั้งแต่ 14 ต.ค. 2568 ไฟล์ยังเปิดได้ แต่ไม่มีอัปเดตความปลอดภัย
เลือกวิธีให้ถูกงาน
| วิธี | ใช้เมื่อ | ตัวอย่าง |
|---|---|---|
| FILTER | ดึงทุกแถวที่ตรงเงื่อนไขเป็นตารางใหม่ อัปเดตเอง (2021 ขึ้นไป) | =FILTER(A5:F14,B5:B14="กลาง") |
| XLOOKUP | ต้องการแค่รายการแรกที่พบ | =XLOOKUP("กลาง",B5:B14,A5:A14) |
| COUNTIFS / SUMIFS | ต้องการแค่จำนวนหรือผลรวม ไม่ต้องเห็นรายการ | =COUNTIFS(B5:B14,"กลาง") |
| Data > Filter | ซ่อนแถวในตารางเดิมชั่วคราว ดูครั้งเดียว | Data > Filter |
| INDEX + AGGREGATE | ดึงหลายแถวใน Excel 2016–2019 (ลากสูตรลง) | =INDEX($A:$A,AGGREGATE(15,6,ROW(…)/(เงื่อนไข),ROWS($A$5:A5))) |
ใน Power BI ใช้อะไร
ชื่อเดียวกัน แต่ FILTER ของ DAX คืนตารางไว้ใช้ต่อในสูตร ไม่แสดงเป็นแถว
กรองแถวแบบเดียวกัน แต่บันทึกเป็นขั้นตอนที่รันซ้ำได้ทุกครั้งที่ข้อมูลเปลี่ยน
ไฟล์ฝึก FILTER
9Expert-FILTER-Practice-v1.2.xlsx
โจทย์ในชีตแบบฝึกหัด
- ข้อ 1เลขที่คำสั่งซื้อที่ขายผ่านช่องทาง Online
- ข้อ 2เลขที่คำสั่งซื้อที่ยอดสุทธิมากกว่า 1,000,000 บาท
- ข้อ 3ชื่อพนักงานขายของคำสั่งซื้อภาคกลางที่ขายผ่าน Online
- ข้อ 4เลขที่คำสั่งซื้อของภาคเหนือหรือภาคใต้
- ข้อ 5ดึงเลขที่คำสั่งซื้อภาคตะวันตก ถ้าไม่มีให้แสดงคำว่า ไม่พบข้อมูล
วิดีโอประกอบ
ในเว็บจริงจะฝังคลิปพร้อมตั้งเวลาเริ่มตรงหัวข้อนี้ ในต้นแบบเปิดผลค้นหาในช่องแทน
เปิดใน YouTubeแบบทดสอบ 3 ข้อ
1. =FILTER(A5:F14,B5:B14="กลาง") ถ้าไม่มีภาคกลางเลย จะได้อะไร
Excel แสดงผลว่างไม่ได้ จึงได้ #CALC! ใส่ if_empty เพื่อแสดงข้อความแทน
2. กรองแถวที่ภาคเป็นกลาง และยอดตั้งแต่ 100,000 เขียน include อย่างไร
* คูณเงื่อนไขทีละแถว ได้ 1 เฉพาะแถวที่ตรงทั้งสองข้อ (AND) ส่วน + คือ OR และ AND() รวมทุกแถวเป็นค่าเดียว จึงใช้ใน FILTER ไม่ได้
3. include ต้องมีขนาดเท่าไร
include ต้องสูงหรือกว้างเท่ากับ array ตามที่ Microsoft ระบุ ถ้าขนาดไม่ตรงกัน FILTER จะได้ #VALUE!
ไปต่อ
ต่อยอดใน Microsoft Excel Advanced: สูตรสรุปผลแบบมีเงื่อนไข สูตรสืบค้นข้อมูล สูตรใหม่ใน Microsoft 365 และการจัดการ Error (2 วัน)