---
title: FILTER – กรองข้อมูลด้วยเงื่อนไข แสดงเฉพาะแถวที่ตรงเงื่อนไข
url: https://www.thepexcel.com/functions/google-sheets/filter/filter-google-sheets/
type: function-explainer
program: Google Sheets
syntax: "=FILTER(range, condition1, [condition2, ...])"
date: 2025-12-20
scores:
  popularity: 9
  difficulty: 5
  usefulness: 9
---

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

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

## คำอธิบาย

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

## Syntax

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

**google-sheets**

```excel
=FILTER(A2:C10, B2:B10>100)
```

กรองแถวที่ column B มีค่ามากกว่า 100

**google-sheets**

```excel
=FILTER(A2:D100, B2:B100="North", C2:C100>50000)
```

หลายเงื่อนไข AND - ภาค North และยอดขายเกิน 50000

**google-sheets**

```excel
=FILTER(A2:C10, (B2:B10="North")+(B2:B10="South"))
```

OR logic - ภาค North หรือ South

## Arguments

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

## เคสการใช้งาน

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

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

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

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

### จัดทำ Dashboard

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

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

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

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: กรองข้อมูลเงื่อนไขเดียว

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

**ผลลัพธ์:** `Apple	100
Orange	150`

กรองเฉพาะสินค้าที่มีราคามากกว่า 100 บาท ผลลัพธ์จะแสดง Apple และ Orange พร้อมราคา
.
สังเกตว่าเราใช้ {} สร้าง Array ตัวอย่างขึ้นมาเลย ซึ่งทำให้ตัวอย่างอ่านเข้าใจได้เองโดยไม่ต้องดูภาพ 💡

### 2. ตัวอย่างที่ 2: กรองหลายเงื่อนไข (AND)

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

**ผลลัพธ์:** `North	1500
North	2000`

กรองเฉพาะยอดขายที่ภูมิภาค="North" AND ยอดขาย>1000 บาท
.
เงื่อนไขหลายตัวจะทำงานแบบ AND โดย Default หมายความว่าต้องเป็นจริงทุกเงื่อนไข ดังนั้นได้เฉพาะ 2 แถวที่ตรงทั้ง 2 เงื่อนไข

### 3. ตัวอย่างที่ 3: กรองแบบ OR

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

**ผลลัพธ์:** `Banana	50
Orange	150`

กรองสินค้าที่ราคา120 บาท ได้ Banana (50) และ Orange (150)
.
ที่เจ๋งคือเราใช้เครื่องหมาย + เพื่อทำ OR ระหว่างเงื่อนไข ซึ่ง Google Sheets จะแปลง TRUE+TRUE หรือ TRUE+FALSE เป็น TRUE ส่วน FALSE+FALSE เป็น FALSE ครับ 😎

### 4. ตัวอย่างที่ 4: ใช้ร่วมกับ SORT และ UNIQUE

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

**ผลลัพธ์:** `North	2000
North	1500
East	1200`

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

## หมายเหตุเพิ่มเติม

💡 **Tip ที่ผมใช้บ่อย:**
.
ถ้าต้องการแสดงข้อความเมื่อไม่มีข้อมูล แนะนำให้ใช้ IFNA แทน IFERROR เพราะจะจัดการเฉพาะกรณี #N/A (ไม่เจอข้อมูล) ไม่ได้ซ่อน Error อื่นที่อาจเกิดจากสูตรผิดพลาด
.
ตัวอย่าง: =IFNA(FILTER(A2:C100, B2:B100>1000), "ไม่พบรายการที่ยอดขายมากกว่า 1000 บาท")
.
**Performance Tip:**
.
ถ้าใช้ FILTER กับข้อมูลหลักหมื่นแถว ควรหลีกเลี่ยงการ Nest FILTER หลายชั้นเกินไป เพราะจะช้า ให้ลองใช้ QUERY แทนถ้าทำได้ จะเร็วกว่าครับ
.
**ใช้ร่วมกับฟังก์ชันอื่น:**
.
- FILTER + SORT = กรองและเรียงลำดับในสูตรเดียว
- FILTER + UNIQUE = กรองและเอาค่าซ้ำออก
- FILTER + COUNTA = นับจำนวนแถวที่ผ่านเงื่อนไข
- FILTER + SUM/AVERAGE = คำนวณจากข้อมูลที่กรองแล้ว
.
ส่วนตัวผมชอบใช้ FILTER + SORT มากที่สุด เพราะได้รายงานที่สมบูรณ์ทันทีโดยไม่ต้องทำหลายขั้นตอน 😎

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

**Q: ใช้ 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" อยู่ด้วย 😎

**Q: 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 สะดวกกว่า ✨

## ฟังก์ชันที่เกี่ยวข้อง

- sort-google-sheets
- unique-google-sheets
- [QUERY – ฟังก์ชันค้นหาและจัดการข้อมูลด้วยภาษา SQL-like](https://www.thepexcel.com/functions/google-sheets/google/query-google-sheets/)
- [ARRAYFORMULA – กระจายสูตรเดียวไปทั้งคอลัมน์แบบอัตโนมัติ](https://www.thepexcel.com/functions/google-sheets/google/arrayformula-google-sheets/)

## แหล่งข้อมูลเพิ่มเติม

- [Google Sheets FILTER Function - Official Documentation](https://support.google.com/docs/answer/3093197) _(Official Documentation)_
- [Ben Collins - Google Sheets FILTER Function Guide](https://www.benlcollins.com/spreadsheets/google-sheets-filter-function/) _(Tutorial)_
- [Google Workspace Learning Center - FILTER Examples](https://support.google.com/a/users/answer/9308952) _(Guide)_

---

_Source: [https://www.thepexcel.com/functions/google-sheets/filter/filter-google-sheets/](https://www.thepexcel.com/functions/google-sheets/filter/filter-google-sheets/)_
