ต้องการดึงข้อมูลสาขากรุงเทพ ปี 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 ที่ใช้บ่อย 5 แบบ
SELECT + WHERE กรองข้อมูล
column ใช้ตัวอักษร A B C D (ไม่ใช่ชื่อ header) เว้นแต่จะใส่ headers=1 แล้วใช้ชื่อ column จริง
ORDER BY + LIMIT ดู Top N
DESC = มากไปน้อย, ASC = น้อยไปมาก (default) — LIMIT 10 ดึงแค่ 10 แถวแรก
GROUP BY สรุปยอดตามกลุ่ม
รองรับ SUM, COUNT, AVG, MIN, MAX — ทำ pivot table ที่ dynamic กว่า built-in Pivot Table
WHERE กับ Text และ Date
QUERY + IMPORTRANGE ข้ามไฟล์
เมื่อใช้กับ IMPORTRANGE column เป็น Col1 Col2 Col3... (ไม่ใช่ A B C เพราะ range อาจไม่ได้เริ่มจาก column A)

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 แทน
