🔎 QUERY Function

QUERY Google Sheets — SQL ใน Spreadsheet กรองข้อมูลขั้นสูงในสูตรเดียว

AdminYo
11 เมษายน 2026
10 นาที
QUERY Google Sheets SQL กรองข้อมูล GROUP BY ORDER BY

Cheat Sheet สูตร Google Sheets ฟรี

รวมสูตรที่ใช้บ่อย พร้อมตัวอย่าง อธิบายเข้าใจง่าย เปิดดูได้ตลอดขณะทำงาน

ต้องการดึงข้อมูลสาขากรุงเทพ ปี 2026 ยอดขาย > 10,000 บาท เรียงจากมากไปน้อย ดู top 10 — ต้องทำ filter หลายรอบ ยุ่งยาก

QUERY() ทำทุกอย่างในสูตรเดียว ไม่ต้องทำ filter ซ้อนกัน ผลลัพธ์อัปเดตอัตโนมัติเมื่อข้อมูลต้นทางเปลี่ยน

QUERY vs FILTER — ใช้อะไรดีกว่า?

FILTER ง่ายและเร็วสำหรับเงื่อนไขตรงๆ QUERY ดีกว่าเมื่อต้องการ GROUP BY, ORDER BY, LIMIT หรือ SELECT เฉพาะบาง column — Excel ไม่มี QUERY ต้องใช้ Power Query แทน

โครงสร้าง QUERY ที่ต้องรู้

=QUERY(data, "query_string", headers)
data = range ข้อมูล เช่น A1:D100 หรือ A:D
query_string = คำสั่ง SQL-like ใน double quotes
headers = จำนวนแถว header (ปกติใส่ 1)

คำสั่ง QUERY ที่ใช้บ่อย 5 แบบ

1

SELECT + WHERE กรองข้อมูล

=QUERY(A:D, "SELECT A,B,C WHERE D>10000", 1)
← ดึง column A B C เฉพาะแถวที่ D > 10000

column ใช้ตัวอักษร A B C D (ไม่ใช่ชื่อ header) เว้นแต่จะใส่ headers=1 แล้วใช้ชื่อ column จริง

2

ORDER BY + LIMIT ดู Top N

=QUERY(A:C, "SELECT A,B ORDER BY B DESC LIMIT 10", 1)
← เรียงยอดขายมากไปน้อย ดูแค่ top 10

DESC = มากไปน้อย, ASC = น้อยไปมาก (default) — LIMIT 10 ดึงแค่ 10 แถวแรก

3

GROUP BY สรุปยอดตามกลุ่ม

=QUERY(A:C, "SELECT A, SUM(B), COUNT(B) GROUP BY A", 1)
← รวมยอดขายและนับจำนวน transaction ต่อสาขา

รองรับ SUM, COUNT, AVG, MIN, MAX — ทำ pivot table ที่ dynamic กว่า built-in Pivot Table

4

WHERE กับ Text และ Date

WHERE A='กรุงเทพ' ← text ใช้ single quote
WHERE A LIKE '%เหนือ%' ← contains
WHERE A>date '2026-01-01' ← วันที่ใช้ date keyword
WHERE A IS NOT NULL ← กรอง cell ว่าง
5

QUERY + IMPORTRANGE ข้ามไฟล์

=QUERY(IMPORTRANGE(url,"Sheet1!A:E"), "SELECT * WHERE Col3='สาขาเหนือ'", 1)

เมื่อใช้กับ IMPORTRANGE column เป็น Col1 Col2 Col3... (ไม่ใช่ A B C เพราะ range อาจไม่ได้เริ่มจาก column A)

ผลลัพธ์ QUERY กรองและเรียงข้อมูล

QUERY กรอง GROUP BY เรียง — ผลอัปเดตอัตโนมัติเมื่อข้อมูลเปลี่ยน

เทคนิค QUERY ขั้นสูง

  • LABEL เปลี่ยนชื่อ column — LABEL SUM(B) 'ยอดรวม' เปลี่ยน header จาก "sum B" เป็นชื่อที่อ่านง่าย
  • Dynamic WHERE condition — ใช้ & ต่อ string: "WHERE A='"&C1&"'" — เปลี่ยนค่าใน C1 QUERY ก็กรองตาม โดยไม่ต้องแก้สูตร
  • SELECT * เพื่อดึงทุก column — "SELECT *" ดึงทุก column ใช้เมื่อต้องการข้อมูลครบแต่แค่ต้องการกรองหรือเรียง

Error ที่เจอบ่อย

#VALUE! หรือ Unable to parse query string

ตรวจ syntax: text ต้องใช้ single quote 'text' ไม่ใช่ double quote, column เป็น A B C ไม่ใช่ตัวเลข, คำสั่ง SELECT WHERE ORDER BY ต้องพิมพ์ถูกต้อง

Col ไม่ตรง — ได้ข้อมูลผิด column

ถ้า range ไม่ได้เริ่มจาก column A ต้องใช้ Col1, Col2... แทน A, B เช่น range C:F → C=Col1, D=Col2 หรือใช้ headers=1 แล้วใช้ชื่อจริงใน query

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

QUERY กับ FILTER เลือกใช้อะไรดีกว่า?

FILTER: ง่ายและเร็ว เหมาะกรองตาม condition เดียวหรือสองอย่าง QUERY: เหมาะเมื่อต้องการ GROUP BY, ORDER BY, LIMIT หรือ SELECT เฉพาะ column ที่ต้องการ — ถ้า FILTER ทำได้ก็ใช้ FILTER เพราะเร็วกว่า

ใช้ชื่อ column header ใน QUERY ได้ไหม?

ได้ถ้าใส่ headers=1 และ range ครอบ header row เช่น =QUERY(A1:D100,"SELECT ชื่อ, ยอดขาย",1) แต่ถ้าชื่อ header มีเว้นวรรคหรือภาษาไทย อาจต้องใช้ backtick ` ครอบชื่อ

QUERY ช้าไหมถ้าข้อมูลเยอะ?

QUERY ช้ากว่า FILTER เล็กน้อยในการ render แต่ สำหรับข้อมูลไม่เกินหลักแสนแถว ยังโอเค ถ้าข้อมูลล้านแถวขึ้นไปควรใช้ BigQuery แทน

ถ้าบทความนี้มีประโยชน์ ช่วยแชร์ให้เพื่อนๆ ด้วย

อยากสร้างระบบจริงด้วย Google Sheets?

คู่มือฉบับสมบูรณ์ สอนสร้างระบบ step-by-step ตั้งแต่เริ่มต้นจนใช้งานได้จริง พร้อมเทมเพลตและไฟล์ตัวอย่างครบ

ดาวน์โหลดทันทีหลังชำระเงิน ไม่มีค่าสมัครรายเดือน

บทความที่เกี่ยวข้อง

เครื่องมือแนะนำ