Thep Excel

FILTER – กรองข้อมูลด้วยเงื่อนไข แสดงเฉพาะแถวที่ตรงเงื่อนไข

FILTER กรองข้อมูลจาก Range แล้วแสดงเฉพาะแถว/คอลัมน์ที่ตรงเงื่อนไข รองรับหลายเงื่อนไข (AND/OR) และอัปเดตผลลัพธ์แบบ Real-time เมื่อข้อมูลต้นทางเปลี่ยน ทำให้เหมาะกับการสร้างรายงานไดนามิก

=FILTER(range, condition1, [condition2, ...])

By ThepExcel AI Agent
20 December 2025

Function Metrics


Popularity
9/10

Difficulty
5/10

Usefulness
9/10

Syntax & Arguments

=FILTER(range, condition1, [condition2, ...])

Argument Type Required Default Description
range Range Yes ช่วงข้อมูลที่ต้องการกรอง สามารถเป็นหลายคอลัมน์ได้
condition1 Array Yes เงื่อนไขแรกในการกรอง ต้องเป็น Array ของค่า TRUE/FALSE ที่มีจำนวนแถวหรือคอลัมน์เท่ากับ range
สามารถใช้นิพจน์เปรียบเทียบ เช่น B2:B100>1000 หรือ C2:C100=”North”
condition2 Array Optional เงื่อนไขเพิ่มเติม (Optional) สามารถใส่ได้หลายเงื่อนไข
เงื่อนไขทั้งหมดจะทำงานแบบ AND (ต้องเป็นจริงทุกเงื่อนไข)
ถ้าต้องการ OR ใช้เครื่องหมาย + เช่น (condition1+condition2)

How it works

สร้างรายงานแบบไดนามิก

กรองข้อมูลตามเงื่อนไขหลายข้อ เช่น ยอดขายตามภูมิภาค ช่วงวันที่ หรือประเภทสินค้า แล้วอัปเดตอัตโนมัติเมื่อข้อมูลต้นทางเปลี่ยน

แสดงข้อมูลที่ตรงเงื่อนไข

แยกข้อมูลเฉพาะที่ต้องการ เช่น รายการสินค้าที่ราคามากกว่า 1000 บาท หรือพนักงานที่อายุมากกว่า 30 ปี

จัดทำ Dashboard

สร้าง Dashboard ที่มี Dropdown หรือ Input เพื่อให้ผู้ใช้เลือกเงื่อนไข แล้ว FILTER จะแสดงผลตามเงื่อนไขที่เลือกทันที

ผลรวมข้อมูลที่กรองแล้ว

ใช้ร่วมกับ SUM, AVERAGE, COUNT เพื่อคำนวณจากข้อมูลที่กรองแล้ว เช่น =SUM(FILTER(Sales, Region="North"))

Examples

ตัวอย่างที่ 1: กรองข้อมูลเงื่อนไขเดียว
FILTER({"Apple",100; "Banana",50; "Orange",150; "Mango",80}, {100; 50; 150; 80}>100)
กรองเฉพาะสินค้าที่มีราคามากกว่า 100 บาท ผลลัพธ์จะแสดง Apple และ Orange พร้อมราคา
.
สังเกตว่าเราใช้ {} สร้าง Array ตัวอย่างขึ้นมาเลย ซึ่งทำให้ตัวอย่างอ่านเข้าใจได้เองโดยไม่ต้องดูภาพ 💡
Google Sheets Formula:

=FILTER({"Apple",100; "Banana",50; "Orange",150; "Mango",80}, {100; 50; 150; 80}>100)

Result:

Apple 100
Orange 150

ตัวอย่างที่ 2: กรองหลายเงื่อนไข (AND)
FILTER({"North",1500; "South",800; "North",2000; "East",1200}, {"North"; "South"; "North"; "East"}="North", {1500; 800; 2000; 1200}>1000)
กรองเฉพาะยอดขายที่ภูมิภาค="North" AND ยอดขาย>1000 บาท
.
เงื่อนไขหลายตัวจะทำงานแบบ AND โดย Default หมายความว่าต้องเป็นจริงทุกเงื่อนไข ดังนั้นได้เฉพาะ 2 แถวที่ตรงทั้ง 2 เงื่อนไข
Google Sheets Formula:

=FILTER({"North",1500; "South",800; "North",2000; "East",1200}, {"North"; "South"; "North"; "East"}="North", {1500; 800; 2000; 1200}>1000)

Result:

North 1500
North 2000

ตัวอย่างที่ 3: กรองแบบ OR
FILTER({"Apple",100; "Banana",50; "Orange",150}, ({100; 50; 150}120))
กรองสินค้าที่ราคา<60 หรือ >120 บาท ได้ Banana (50) และ Orange (150)
.
ที่เจ๋งคือเราใช้เครื่องหมาย + เพื่อทำ OR ระหว่างเงื่อนไข ซึ่ง Google Sheets จะแปลง TRUE+TRUE หรือ TRUE+FALSE เป็น TRUE ส่วน FALSE+FALSE เป็น FALSE ครับ 😎
Google Sheets Formula:

=FILTER({"Apple",100; "Banana",50; "Orange",150}, ({100; 50; 150}<60)+({100; 50; 150}>120))

Result:

Banana 50
Orange 150

ตัวอย่างที่ 4: ใช้ร่วมกับ SORT และ UNIQUE
SORT(FILTER({"North",1500; "South",800; "North",2000; "East",1200}, {1500; 800; 2000; 1200}>1000), 2, FALSE)
กรองยอดขายที่>1000 บาทก่อน แล้วเรียงจากยอดขายมากไปน้อย (คอลัมน์ที่ 2, FALSE=มากไปน้อย)
.
ส่วนตัวผมชอบใช้ FILTER + SORT คู่กันมากเพราะได้รายงานที่กรองและเรียงลำดับในสูตรเดียว แถมถ้าข้อมูลต้นทางเปลี่ยน ผลลัพธ์ก็อัปเดตทันที ✨
Google Sheets Formula:

=SORT(FILTER({"North",1500; "South",800; "North",2000; "East",1200}, {1500; 800; 2000; 1200}>1000), 2, FALSE)

Result:

North 2000
North 1500
East 1200

FAQs

ทำไม FILTER ถึงคืน #N/A Error?

ปัญหานี้เจอบ่อยมากครับ 😅 สาเหตุหลักคือ FILTER หาข้อมูลที่ตรงเงื่อนไขไม่เจอเลยแม้แถวเดียว
.
แก้ได้โดยใช้ IFERROR หรือ IFNA ครอบไว้ เช่น =IFERROR(FILTER(…), “ไม่พบข้อมูล”) หรือ =IFNA(FILTER(…), “ไม่มีรายการที่ตรงเงื่อนไข”)
.
ส่วนตัวผมแนะนำให้ใช้ IFNA มากกว่า IFERROR เพราะจะจัดการเฉพาะกรณีไม่เจอข้อมูล ไม่ได้ซ่อน Error ประเภทอื่นที่อาจเกิดจากสูตรผิดพลาด

FILTER กับ QUERY ต่างกันอย่างไร?

FILTER และ QUERY ทำงานคล้ายกันคือกรองข้อมูล แต่มีข้อแตกต่างสำคัญครับ
.
FILTER เขียนแบบ Formula ปกติ เหมาะกับเงื่อนไขง่ายๆ และทำงานเร็วกว่า
.
QUERY ใช้ภาษา SQL-like ซึ่งทรงพลังกว่า สามารถ GROUP BY, SUM, AVERAGE ได้ในสูตรเดียว แต่เขียนยากกว่าเล็กน้อย
.
ส่วนตัวผมใช้ FILTER สำหรับกรองธรรมดา แต่ถ้าต้องการสรุปข้อมูลหรือจัดกลุ่ม จะเปลี่ยนไปใช้ QUERY แทน 💡

สามารถกรองทั้งแถวและคอลัมน์พร้อมกันได้ไหม?

ไม่ได้โดยตรงครับ FILTER จะกรองได้ทีละมิติ (แถว หรือ คอลัมน์)
.
แต่เราสามารถ Nest FILTER 2 ชั้นได้ เช่น =FILTER(FILTER(A1:D100, B1:B100>1000), {TRUE, FALSE, TRUE, FALSE}) จะกรองแถวก่อน (B>1000) แล้วกรองคอลัมน์ที่ 1,3 ต่อ
.
ส่วนตัวผมเคยใช้เทคนิคนี้สร้าง Dashboard ที่ให้ผู้ใช้เลือกได้ทั้งเงื่อนไขแถว (เช่น วันที่) และคอลัมน์ที่จะแสดง (เช่น เลือกแสดงเฉพาะคอลัมน์ที่สนใจ)

FILTER ทำงานกับข้อมูลจาก Sheet อื่นได้ไหม?

ได้ครับ สามารถอ้างอิง Range จาก Sheet อื่นได้ตามปกติ
.
ตัวอย่าง: =FILTER(Data!A2:C100, Data!B2:B100>1000) จะกรองข้อมูลจาก Sheet ชื่อ “Data”
.
ที่ต้องระวังคือต้องแน่ใจว่า Range ของเงื่อนไข (Data!B2:B100) มีจำนวนแถวเท่ากับ Range หลัก (Data!A2:C100) ถ้าไม่เท่ากันจะได้ #VALUE! Error

ใช้ FILTER กับข้อความ (Text) ต้องระวังอะไร?

ตอนกรองข้อความต้องใส่ใน Double Quotes (“) และต้องตรงทุกตัวอักษรรวมถึง Case ด้วยครับ
.
เช่น =FILTER(A2:B10, A2:A10=”North”) จะหา “North” เท่านั้น ถ้าเป็น “north” หรือ “NORTH” จะไม่ตรง
.
ถ้าต้องการไม่สนใจ Case ใช้ UPPER หรือ LOWER ครอบทั้ง 2 ฝั่ง เช่น =FILTER(A2:B10, UPPER(A2:A10)=”NORTH”)
.
ส่วนตัวผมมักใช้ SEARCH หรือ REGEXMATCH แทนถ้าต้องการหาแบบ Partial Match เช่น =FILTER(A2:B10, ISNUMBER(SEARCH(“North”, A2:A10))) จะหาทุกเซลล์ที่มีคำว่า “North” อยู่ด้วย 😎

FILTER ใช้ได้ใน Excel ไหม?

ใช้ได้ครับ แต่เฉพาะ Excel 365 และ Excel 2021 เท่านั้น (Excel เวอร์ชันเก่าไม่มี)
.
ไวยากรณ์แตกต่างกันเล็กน้อย:
• Google Sheets ใช้ comma สำหรับ AND: =FILTER(A:C, B:B>100, C:C=”X”)
• Excel ใช้ * สำหรับ AND: =FILTER(A:C, (B:B>100)*(C:C=”X”))
.
Excel มี parameter if_empty ที่ Google Sheets ไม่มี =FILTER(A:C, B:B>100, “ไม่พบข้อมูล”)
.
ส่วนตัวผมคิดว่า syntax ของ Google Sheets อ่านง่ายกว่า แต่ Excel มี if_empty ทำให้จัดการ Error สะดวกกว่า ✨

Resources & Related

Additional Notes

FILTER ใช้กรองข้อมูลจาก Range ที่กำหนด โดยจะแสดงเฉพาะแถวหรือคอลัมน์ที่ตรงกับเงื่อนไขที่ระบุ
.
ที่เจ๋งคือ FILTER เป็น Dynamic Array Function ซึ่งหมายความว่าผลลัพธ์จะกระจายออกมาเองอัตโนมัติ ไม่ต้องลากสูตรทีละเซลล์ ถ้าข้อมูลต้นทางเปลี่ยน ผลลัพธ์ก็จะอัปเดตทันทีแบบ Real-time
.
ส่วนตัวผมคิดว่า FILTER เป็นหนึ่งในฟังก์ชันที่ทรงพลังที่สุดใน Google Sheets เลย เพราะสามารถสร้างรายงานแบบไดนามิกได้ง่ายมาก แค่เปลี่ยนเงื่อนไข ข้อมูลก็เปลี่ยนทันที 😎
.
ที่ต้องระวังคือถ้า FILTER หาข้อมูลที่ตรงเงื่อนไขไม่เจอเลยแม้แถวเดียว จะคืน #N/A Error ทันที ซึ่งเราสามารถจัดการได้ด้วย IFERROR หรือ IFNA

Leave a Reply

Your email address will not be published. Required fields are marked *