โจทย์ที่เจอบ่อยคือ “มีสินค้าอะไรบ้าง และแต่ละอย่างขายไปกี่ครั้ง” จากลิสต์ยาวๆ ที่มีรายการซ้ำ ทำได้ด้วย UNIQUE ดึงรายการที่ไม่ซ้ำ แล้ว COUNTIF นับจำนวนของแต่ละตัว บทความนี้มีทั้งวิธีสูตรผสม วิธี GROUPBY ตัวใหม่ และวิธี PivotTable
วิธีที่ 1: UNIQUE + COUNTIF (Microsoft 365)
=UNIQUE(A2:A10)| A | C | D | ||
|---|---|---|---|---|
| 1 | สินค้าที่ขาย | รายการ | จำนวนครั้ง | |
| 2 | เมาส์ | เมาส์ | 4 | |
| 3 | คีย์บอร์ด | คีย์บอร์ด | 3 | |
| 4 | เมาส์ | จอ | 2 |
คอลัมน์ C: =UNIQUE(A2:A10) ล้นออกมาเป็นรายการที่ไม่ซ้ำ
คอลัมน์ D: =COUNTIF(A2:A10, C2#) เครื่องหมาย # ต่อท้าย C2 หมายถึง “อ้างอิงทั้ง spill range” COUNTIF จึงนับให้ครบทุกรายการในคอลัมน์ C อัตโนมัติ
เรียงจากมากไปน้อย (Top list)
=SORT(HSTACK(UNIQUE(A2:A10), COUNTIF(A2:A10,UNIQUE(A2:A10))), 2, -1)| C | D | |
|---|---|---|
| 1 | รายการ | จำนวน |
| 2 | เมาส์ | 4 |
| 3 | คีย์บอร์ด | 3 |
| 4 | จอ | 2 |
HSTACK วางรายการกับจำนวนไว้ข้างกัน แล้ว SORT เรียงตามคอลัมน์ที่ 2 จากมากไปน้อย ได้ตารางอันดับในสูตรเดียว
วิธีที่ 2: GROUPBY (Excel เวอร์ชันใหม่)
=GROUPBY(A2:A10, A2:A10, COUNTA)| C | D | |
|---|---|---|
| 1 | รายการ | นับ |
| 2 | คีย์บอร์ด | 3 |
| 3 | จอ | 2 |
| 4 | เมาส์ | 4 |
GROUPBY จัดกลุ่มและสรุปในฟังก์ชันเดียว เหมือน PivotTable แต่เป็นสูตรที่อัปเดตสด เพิ่มอาร์กิวเมนต์เพื่อเรียงลำดับหรือใส่ยอดรวมได้
วิธีที่ 3: PivotTable (ไม่ต้องเขียนสูตร)
เลือกข้อมูล → Insert → PivotTable ลากคอลัมน์สินค้าไปช่อง Rows และลากไปช่อง Values อีกครั้ง (จะกลายเป็น Count of สินค้า) เหมาะเมื่อข้อมูลเยอะและอยากกรอง/จัดกลุ่มต่อ ดู PivotTable พื้นฐาน
ข้อควรรู้
- นับจำนวน “ชนิด” ที่ไม่ซ้ำ — ถ้าอยากรู้แค่ว่ามีสินค้ากี่ชนิด ใช้
=COUNTA(UNIQUE(A2:A10)) - รวมยอดขายแทนการนับครั้ง — เปลี่ยน COUNTIF เป็น
SUMIF(A2:A10, C2#, B2:B10)เมื่อ B คือยอดเงิน - เวอร์ชันเก่าไม่มี UNIQUE — ใช้ Remove Duplicates (เมนู Data) คัดลอกออกมาก่อน แล้วค่อย COUNTIF
- ตัวพิมพ์เล็ก-ใหญ่ — UNIQUE มองว่า “เมาส์” กับ “เมาส์ ” (มีเว้นวรรค) เป็นคนละตัว ควร TRIM ข้อมูลก่อน