Thep Excel

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

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

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

ความนิยม9/10
ความยาก5/10
ประโยชน์9/10

อัปเดต 20 December 2025

Syntax & Arguments

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

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

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

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 ตัวอย่างขึ้นมาเลย ซึ่งทำให้ตัวอย่างอ่านเข้าใจได้เองโดยไม่ต้องดูภาพ 💡

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

ผลลัพธ์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 เงื่อนไข

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

ผลลัพธ์North 1500
North 2000
ตัวอย่างที่ 3: กรองแบบ ORFILTER({"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 ครับ 😎

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

ผลลัพธ์Banana 50
Orange 150
ตัวอย่างที่ 4: ใช้ร่วมกับ SORT และ UNIQUESORT(FILTER({"North",1500; "South",800; "North",2000; "East",1200}, {1500; 800; 2000; 1200}>1000), 2, FALSE)

กรองยอดขายที่>1000 บาทก่อน แล้วเรียงจากยอดขายมากไปน้อย (คอลัมน์ที่ 2, FALSE=มากไปน้อย)

ส่วนตัวผมชอบใช้ FILTER + SORT คู่กันมากเพราะได้รายงานที่กรองและเรียงลำดับในสูตรเดียว แถมถ้าข้อมูลต้นทางเปลี่ยน ผลลัพธ์ก็อัปเดตทันที ✨

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

ผลลัพธ์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

ฟังก์ชันที่ผู้เขียนโยงไว้กับ FILTER จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้FILTERFilter
Google (4)
ARRAYFORMULA

ARRAYFORMULA กระจายผลลัพธ์จากสูตรเดียวออกเป็นหลายแถวหรือหลายคอลัมน์พร้อมกัน โดยไม่ต้องลากสูตร ช่วยประหยัดเวลา ลดข้อผิดพลาด และอัปเดตอัตโนมัติเมื่อมีข้อมูลใหม่ ทำให้ชีททำงานเร็วขึ้นเพราะลดจำนวนสูตรจากหลายพันเหลือแค่หนึ่ง

GOOGLEFINANCE

GOOGLEFINANCE ช่วยดึงข้อมูลหุ้น กองทุน และค่าเงินจาก Google Finance มาแสดงในตารางได้ทันที รองรับทั้งราคาปัจจุบัน (Real-time, ดีเลย์ 20 นาที) และราคาย้อนหลัง (Historical Data) สามารถดึงค่าอื่นๆ เช่น P/E, Market Cap หรือปริมาณการซื้อขายได้ด้วย

QUERY

QUERY ใช้ภาษา SQL-like (Google Visualization API Query Language) ในการจัดการข้อมูลจาก Range ที่กำหนด รองรับ 9 clauses ตามลำดับ: SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT, OFFSET, LABEL, FORMAT พร้อม Aggregate Functions (SUM, COUNT, AVG, MIN, MAX) และ Scalar Functions สำหรับวันที่และข้อความ ทำให้สามารถกรอง จัดเรียง และสรุปข้อมูลได้แบบ Dynamic ด้วยสูตรเดียว เหมาะสำหรับการสร้างรายงานและ Dashboard ที่ซับซ้อน

SPARKLINE

SPARKLINE สร้างกราฟเส้น กราฟแท่ง หรือกราฟ Win/Loss ขนาดจิ๋วภายในเซลล์เดียว เหมาะสำหรับสร้าง Dashboard ที่ต้องการแสดงแนวโน้มข้อมูลหลายๆ รายการในพื้นที่จำกัด (In-cell chart)

Array (1)
FLATTEN

FLATTEN รวมข้อมูลจากหนึ่งหรือหลายช่วงเข้าด้วยกันเป็นคอลัมน์เดียว โดยเรียงลำดับแถวก่อน (Row-major order) ช่วงข้อมูลไม่จำเป็นต้องมีขนาดเดียวกัน และสามารถผสมเซลล์ เรนจ์ และค่าคงที่ได้

Text (1)
REGEXMATCH

REGEXMATCH เป็นฟังก์ชันสำหรับตรวจสอบว่าข้อความตรงกับรูปแบบ Regular Expression หรือไม่ คืนค่า TRUE หรือ FALSE เหมาะสำหรับ Data Validation และ Filtering ขั้นสูง

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่