อยากดึงเฉพาะแถวที่ตรงเงื่อนไข หรือเรียงข้อมูลใหม่ โดยไม่แตะตารางต้นทาง — Excel ใน Microsoft 365 มี สูตรอาเรย์ไดนามิก อย่าง FILTER, SORT, UNIQUE ที่พิมพ์สูตรเดียวแล้วผลลัพธ์ “หก (spill)” ลงมาเองทั้งชุด บทความนี้ทำบน Excel ใน Microsoft 365 (Windows)
3 สูตรหลัก
| สูตร | ทำอะไร |
=FILTER(ช่วง, เงื่อนไข) |
คืนเฉพาะแถวที่เงื่อนไขเป็นจริง เช่น =FILTER(A2:C7, C2:C7="กทม") |
=SORT(ช่วง, [คอลัมน์], [ทิศ]) |
เรียงข้อมูล ทิศ 1 = น้อยไปมาก, -1 = มากไปน้อย |
=UNIQUE(ช่วง) |
คืนรายการที่ไม่ซ้ำ เอาไว้ทำ “รายชื่อลูกค้าไม่ซ้ำ” |
=SORT(FILTER(...)) |
ซ้อนกันได้ กรองก่อนแล้วเรียง |

ภาพจำลอง: สูตร FILTER เดียวใน F2 ผลลัพธ์หก (spill) ลงมาเอง
เรื่อง Spill ที่ต้องเข้าใจ
| Spill range | พื้นที่ผลลัพธ์ที่หกออกมา คลิกเซลล์บนสุดจะเห็นกรอบสีฟ้าล้อมทั้งชุด |
| ตัวดำเนินการ # | อ้างถึงทั้ง spill ด้วย F2# เช่น =COUNTA(F2#) นับจำนวนผลลัพธ์ |
| #SPILL! error | มีข้อมูลอื่นขวางพื้นที่ที่จะหก — ลบสิ่งที่ขวางออก |
| แก้เฉพาะเซลล์บนสุด | เซลล์อื่นในชุดแก้ไม่ได้ (จะขึ้นเทาจาง) ต้องแก้ที่สูตรต้นทาง |
ตัวอย่างใช้งานจริง: สรุปยอดขายรายจังหวัดแบบสด
ไฟล์บันทึกยอดขายรวมทุกจังหวัดในชีตเดียว อยากมีหน้าสรุปเฉพาะ “กทม” ที่อัปเดตเองเมื่อเพิ่มข้อมูล — เขียน =SORT(FILTER(A2:C100, C2:C100="กทม"), 2, -1) ได้ตารางเฉพาะ กทม เรียงยอดมากไปน้อย พอบันทึกออเดอร์ใหม่ในตารางหลัก หน้าสรุปขยับตามทันทีโดยไม่ต้องกดอะไร
ข้อควรรู้
สูตรกลุ่มนี้มีเฉพาะ Microsoft 365 และ Excel 2021 ขึ้นไป เปิดไฟล์ใน Excel 2019/2016 ผลจะกลายเป็น @FILTER หรือ #NAME? เว้นพื้นที่ด้านล่าง/ขวาของสูตรให้ว่างพอสำหรับผลลัพธ์ อยากได้เฉพาะบางคอลัมน์ ใช้ FILTER ครอบ CHOOSECOLS หรือระบุช่วงต้นทางแค่คอลัมน์ที่ต้องการ
สรุป
FILTER กรอง, SORT เรียง, UNIQUE เอาค่าไม่ซ้ำ — พิมพ์สูตรเดียว ผลลัพธ์หก (spill) เองทั้งชุด อ้างทั้งชุดด้วย # เช่น F2# ระวังพื้นที่ถูกขวางจะขึ้น #SPILL! ใช้ได้เฉพาะ Microsoft 365 / Excel 2021+