FILTER กรองข้อมูลจาก Range แล้วแสดงเฉพาะแถว/คอลัมน์ที่ตรงเงื่อนไข รองรับหลายเงื่อนไข (AND/OR) และอัปเดตผลลัพธ์แบบ Real-time เมื่อข้อมูลต้นทางเปลี่ยน ทำให้เหมาะกับการสร้างรายงานไดนามิก
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| range | Range | ช่วงข้อมูลที่ต้องการกรอง สามารถเป็นหลายคอลัมน์ได้ |
| condition1 | Array | เงื่อนไขแรกในการกรอง ต้องเป็น Array ของค่า TRUE/FALSE ที่มีจำนวนแถวหรือคอลัมน์เท่ากับ range สามารถใช้นิพจน์เปรียบเทียบ เช่น B2:B100>1000 หรือ C2:C100=”North” |
| [condition2]ไม่บังคับ | Array | เงื่อนไขเพิ่มเติม (Optional) สามารถใส่ได้หลายเงื่อนไข เงื่อนไขทั้งหมดจะทำงานแบบ AND (ต้องเป็นจริงทุกเงื่อนไข) ถ้าต้องการ OR ใช้เครื่องหมาย + เช่น (condition1+condition2) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
FILTER ใช้กรองข้อมูลจาก Range ที่กำหนด โดยจะแสดงเฉพาะแถวหรือคอลัมน์ที่ตรงกับเงื่อนไขที่ระบุ
.
ที่เจ๋งคือ FILTER เป็น Dynamic Array Function ซึ่งหมายความว่าผลลัพธ์จะกระจายออกมาเองอัตโนมัติ ไม่ต้องลากสูตรทีละเซลล์ ถ้าข้อมูลต้นทางเปลี่ยน ผลลัพธ์ก็จะอัปเดตทันทีแบบ Real-time
.
ส่วนตัวผมคิดว่า FILTER เป็นหนึ่งในฟังก์ชันที่ทรงพลังที่สุดใน Google Sheets เลย เพราะสามารถสร้างรายงานแบบไดนามิกได้ง่ายมาก แค่เปลี่ยนเงื่อนไข ข้อมูลก็เปลี่ยนทันที 😎
.
ที่ต้องระวังคือถ้า FILTER หาข้อมูลที่ตรงเงื่อนไขไม่เจอเลยแม้แถวเดียว จะคืน #N/A Error ทันที ซึ่งเราสามารถจัดการได้ด้วย IFERROR หรือ IFNA
กรองข้อมูลตามเงื่อนไขหลายข้อ เช่น ยอดขายตามภูมิภาค ช่วงวันที่ หรือประเภทสินค้า แล้วอัปเดตอัตโนมัติเมื่อข้อมูลต้นทางเปลี่ยน
แยกข้อมูลเฉพาะที่ต้องการ เช่น รายการสินค้าที่ราคามากกว่า 1000 บาท หรือพนักงานที่อายุมากกว่า 30 ปี
สร้าง Dashboard ที่มี Dropdown หรือ Input เพื่อให้ผู้ใช้เลือกเงื่อนไข แล้ว FILTER จะแสดงผลตามเงื่อนไขที่เลือกทันที
ใช้ร่วมกับ SUM, AVERAGE, COUNT เพื่อคำนวณจากข้อมูลที่กรองแล้ว เช่น =SUM(FILTER(Sales, Region="North"))
กรองเฉพาะสินค้าที่มีราคามากกว่า 100 บาท ผลลัพธ์จะแสดง Apple และ Orange พร้อมราคา
สังเกตว่าเราใช้ {} สร้าง Array ตัวอย่างขึ้นมาเลย ซึ่งทำให้ตัวอย่างอ่านเข้าใจได้เองโดยไม่ต้องดูภาพ 💡
กรองเฉพาะยอดขายที่ภูมิภาค="North" AND ยอดขาย>1000 บาท
เงื่อนไขหลายตัวจะทำงานแบบ AND โดย Default หมายความว่าต้องเป็นจริงทุกเงื่อนไข ดังนั้นได้เฉพาะ 2 แถวที่ตรงทั้ง 2 เงื่อนไข
กรองสินค้าที่ราคา<60 หรือ >120 บาท ได้ Banana (50) และ Orange (150)
ที่เจ๋งคือเราใช้เครื่องหมาย + เพื่อทำ OR ระหว่างเงื่อนไข ซึ่ง Google Sheets จะแปลง TRUE+TRUE หรือ TRUE+FALSE เป็น TRUE ส่วน FALSE+FALSE เป็น FALSE ครับ 😎
กรองยอดขายที่>1000 บาทก่อน แล้วเรียงจากยอดขายมากไปน้อย (คอลัมน์ที่ 2, FALSE=มากไปน้อย)
ส่วนตัวผมชอบใช้ FILTER + SORT คู่กันมากเพราะได้รายงานที่กรองและเรียงลำดับในสูตรเดียว แถมถ้าข้อมูลต้นทางเปลี่ยน ผลลัพธ์ก็อัปเดตทันที ✨
ปัญหานี้เจอบ่อยมากครับ 😅 สาเหตุหลักคือ FILTER หาข้อมูลที่ตรงเงื่อนไขไม่เจอเลยแม้แถวเดียว
แก้ได้โดยใช้ IFERROR หรือ IFNA ครอบไว้ เช่น =IFERROR(FILTER(…), "ไม่พบข้อมูล") หรือ =IFNA(FILTER(…), "ไม่มีรายการที่ตรงเงื่อนไข")
ส่วนตัวผมแนะนำให้ใช้ IFNA มากกว่า IFERROR เพราะจะจัดการเฉพาะกรณีไม่เจอข้อมูล ไม่ได้ซ่อน Error ประเภทอื่นที่อาจเกิดจากสูตรผิดพลาด
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 ที่ให้ผู้ใช้เลือกได้ทั้งเงื่อนไขแถว (เช่น วันที่) และคอลัมน์ที่จะแสดง (เช่น เลือกแสดงเฉพาะคอลัมน์ที่สนใจ)
ได้ครับ สามารถอ้างอิง Range จาก Sheet อื่นได้ตามปกติ
ตัวอย่าง: =FILTER(Data!A2:C100, Data!B2:B100>1000) จะกรองข้อมูลจาก Sheet ชื่อ "Data"
ที่ต้องระวังคือต้องแน่ใจว่า Range ของเงื่อนไข (Data!B2:B100) มีจำนวนแถวเท่ากับ Range หลัก (Data!A2:C100) ถ้าไม่เท่ากันจะได้ #VALUE! Error
ตอนกรองข้อความต้องใส่ใน 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" อยู่ด้วย 😎
ใช้ได้ครับ แต่เฉพาะ 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 สะดวกกว่า ✨
ฟังก์ชันที่ผู้เขียนโยงไว้กับ FILTER จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ARRAYFORMULA กระจายผลลัพธ์จากสูตรเดียวออกเป็นหลายแถวหรือหลายคอลัมน์พร้อมกัน โดยไม่ต้องลากสูตร ช่วยประหยัดเวลา ลดข้อผิดพลาด และอัปเดตอัตโนมัติเมื่อมีข้อมูลใหม่ ทำให้ชีททำงานเร็วขึ้นเพราะลดจำนวนสูตรจากหลายพันเหลือแค่หนึ่ง
GOOGLEFINANCE ช่วยดึงข้อมูลหุ้น กองทุน และค่าเงินจาก Google Finance มาแสดงในตารางได้ทันที รองรับทั้งราคาปัจจุบัน (Real-time, ดีเลย์ 20 นาที) และราคาย้อนหลัง (Historical Data) สามารถดึงค่าอื่นๆ เช่น P/E, Market Cap หรือปริมาณการซื้อขายได้ด้วย
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 สร้างกราฟเส้น กราฟแท่ง หรือกราฟ Win/Loss ขนาดจิ๋วภายในเซลล์เดียว เหมาะสำหรับสร้าง Dashboard ที่ต้องการแสดงแนวโน้มข้อมูลหลายๆ รายการในพื้นที่จำกัด (In-cell chart)
FLATTEN รวมข้อมูลจากหนึ่งหรือหลายช่วงเข้าด้วยกันเป็นคอลัมน์เดียว โดยเรียงลำดับแถวก่อน (Row-major order) ช่วงข้อมูลไม่จำเป็นต้องมีขนาดเดียวกัน และสามารถผสมเซลล์ เรนจ์ และค่าคงที่ได้
REGEXMATCH เป็นฟังก์ชันสำหรับตรวจสอบว่าข้อความตรงกับรูปแบบ Regular Expression หรือไม่ คืนค่า TRUE หรือ FALSE เหมาะสำหรับ Data Validation และ Filtering ขั้นสูง
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่