Thep Excel

UNIQUEฟังก์ชันดึงค่าที่ไม่ซ้ำ

UNIQUE เป็น Dynamic Array Function ที่คืนค่าที่ไม่ซ้ำจาก Array โดยสามารถตรวจซ้ำตามแถวหรือคอลัมน์ (by_col) และเลือกคืนเฉพาะค่าที่พบครั้งเดียว (exactly_once) ผลลัพธ์เป็น Spill Range ที่อัปเดตอัตโนมัติ ใช้ร่วมกับ SORT FILTER COUNTIF เพื่อสร้างรายงานไดนามิกและ dropdown ที่อัปเดตเอง

fx
=UNIQUE(array, [by_col], [exactly_once])

ความนิยม8/10
ความยาก4/10
ประโยชน์9/10

อัปเดต 14 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
array Range/Array ช่วงข้อมูลหรือ Array ที่ต้องการหาค่าไม่ซ้ำ (return ค่าที่ไม่ซ้ำจาก array นี้)
[by_col]ไม่บังคับ Boolean FALSE FALSE = ตรวจซ้ำตามแถว (แนวตั้ง), TRUE = ตรวจซ้ำตามคอลัมน์ (แนวนอน)
[exactly_once]ไม่บังคับ Boolean FALSE FALSE = คืนค่าที่ไม่ซ้ำทั้งหมด, TRUE = คืนเฉพาะค่าที่พบครั้งเดียวเท่านั้น

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

UNIQUE เป็น Dynamic Array Function ที่ดึงค่าที่ไม่ซ้ำจาก Array หรือ Range แล้ว return เป็น Spill Range ที่ขยายอัตโนมัติ รองรับการตรวจซ้ำแบบแถว (by_col=FALSE) หรือคอลัมน์ (by_col=TRUE) และสามารถคืนเฉพาะค่าที่เกิดครั้งเดียว (exactly_once=TRUE) ใช้ร่วมกับ SORT, FILTER เพื่อสร้างรายการ dropdown หรือ dashboard แบบไดนามิก

How it works

สร้างรายการเลือกอัตโนมัติ

คัดรายชื่อทีม/สินค้าไม่ซ้ำเพื่อใช้เป็นแหล่งข้อมูล Data Validation

หาค่าเกิดครั้งเดียว

ใช้ exactly_once=TRUE เพื่อหา outlier หรือค่าที่เกิดครั้งเดียว

เตรียมรายงานสรุป

ใช้ UNIQUE ก่อน SUMIFS เพื่อได้รายการหัวข้อที่ไม่ซ้ำ

Examples

ตารางสินค้าProductTableA1:D6
A B C D
1 รหัสสินค้า ชื่อสินค้า สถานะ ราคา
2 P001 เมาส์ไร้สาย ปิด 590
3 P002 คีย์บอร์ด เปิด 1,290
4 P003 จอ 27 นิ้ว ปิด 8,900
5 P004 หูฟัง เปิด 2,450
6 P005 เว็บแคม ปิด 1,750

ทุกสูตรด้านล่างอ้างถึงตารางนี้ พิมพ์ตามได้เลย ผลลัพธ์จะตรงกับที่เขียนไว้

ตัวอย่างที่ 1: ดึงค่าที่ไม่ซ้ำจากคอลัมน์UNIQUE(C2:C6)

UNIQUE ไล่ดูคอลัมน์สถานะ (C2:C6) ทีละแถว แล้วเก็บเฉพาะค่าที่ยังไม่เคยเจอมาก่อน เรียงตามลำดับที่เจอครั้งแรกในตาราง ไม่ใช่เรียง A-Z

ปิดเจอครั้งแรกที่แถว P001 มาก่อน เปิดเจอครั้งแรกที่แถว P002 ผลลัพธ์เลยได้ "ปิด" ขึ้นก่อน "เปิด" แม้ในตารางจะมีปิดซ้ำถึง 3 ครั้งก็ตาม

ผลลัพธ์นี้เอาไปทำ dropdown เลือกสถานะได้เลย เพราะมีแค่ 2 ค่าไม่ซ้ำ แทนที่จะให้ผู้ใช้เลือกจากสถานะทั้ง 5 แถวดิบๆ

fx
=UNIQUE(C2:C6)

ผลลัพธ์ปิด | เปิด
ตัวอย่างที่ 2: exactly_once – เฉพาะค่าที่เกิดครั้งเดียวUNIQUE(C2:C4, FALSE, TRUE)

ตัวอย่างนี้ดูเฉพาะ 3 แถวแรกของคอลัมน์สถานะ (C2:C4) ซึ่งมีค่าคือ ปิด เปิด ปิด ตามลำดับ argument ที่สาม exactly_once ใส่เป็น TRUE จึงคืนเฉพาะค่าที่ปรากฏครั้งเดียวในช่วงนั้นเท่านั้น

ปิดปรากฏ 2 ครั้งในช่วงนี้เลยถูกตัดออก เหลือแค่ "เปิด" ที่ปรากฏครั้งเดียว (จาก P002) ผลลัพธ์จึงมีค่าเดียว

ต่างจาก UNIQUE ธรรมดาที่จะคืนทั้งปิดและเปิดโดยไม่สนว่าซ้ำกี่ครั้ง exactly_once ใช้หาค่าที่ไม่เหมือนใครเลยในช่วงข้อมูลนั้น เช่น หาลูกค้าที่ซื้อครั้งเดียว

fx
=UNIQUE(C2:C4, FALSE, TRUE)

ผลลัพธ์เปิด
ตัวอย่างที่ 3: SORT + UNIQUE เรียง A-ZSORT(UNIQUE(C2:C6))

UNIQUE หาค่าสถานะที่ไม่ซ้ำได้ "ปิด" กับ "เปิด" ก่อน (เรียงตามลำดับที่เจอในตาราง) แล้ว SORT ห่อรอบนอกอีกชั้นเพื่อเรียงตามลำดับตัวอักษรแทนลำดับที่เจอ

พอไม่ระบุ sort_index กับ sort_order สูตรจะเรียงจากน้อยไปมากตามค่าเริ่มต้น ได้ผลลัพธ์เรียงตามตัวอักษรไทย

แพทเทิร์น SORT(UNIQUE(…)) แบบนี้เหมาะมากกับการทำรายการ dropdown ที่อยากให้ตัวเลือกเรียงเป็นระเบียบ ไม่ใช่เรียงตามว่าใครมาก่อนมาหลังในตารางต้นฉบับ

fx
=SORT(UNIQUE(C2:C6))

ผลลัพธ์ปิด | เปิด
ตัวอย่างที่ 4: UNIQUE หลายคอลัมน์ (Distinct Rows)UNIQUE(C2:D6)

คราวนี้ให้ UNIQUE ดูทั้ง 2 คอลัมน์พร้อมกันคือสถานะและราคา (C2:D6) การเช็คซ้ำจะเช็คทั้งแถว ไม่ใช่แค่คอลัมน์เดียว

แม้สถานะจะซ้ำกันได้ (ปิดซ้ำ 3 ครั้ง) แต่พอจับคู่กับราคาที่ไม่เหมือนกันสักแถวเลย ทำให้ทั้งคู่ (สถานะ, ราคา) ไม่ซ้ำกันเลยสักแถว UNIQUE จึงคืนมาครบทั้ง 5 แถวเหมือนเดิม

ถ้าในตารางมีสองแถวที่ทั้งสถานะและราคาตรงกันเป๊ะ แถวที่ซ้ำนั้นถึงจะถูกตัดออกไปเหลือแถวเดียว นี่คือความต่างจากการเช็คซ้ำแค่คอลัมน์เดียว

fx
=UNIQUE(C2:D6)

ผลลัพธ์ปิด | 590 | เปิด | 1290 | ปิด | 8900 | เปิด | 2450 | ปิด | 1750
ตัวอย่างที่ 5: FILTER + UNIQUE กรองแล้วหาไม่ซ้ำUNIQUE(FILTER(D2:D6, C2:C6="ปิด"))

กรองเอาเฉพาะราคาของสินค้าสถานะปิดออกมาก่อนด้วย FILTER ได้ 590, 8900, 1750 แล้วครอบด้วย UNIQUE อีกชั้น

ในกรณีนี้ราคาทั้งสามค่าไม่ซ้ำกันอยู่แล้ว UNIQUE เลยไม่ได้ตัดอะไรออกเพิ่ม แต่ถ้าสินค้าสถานะปิดสองรายการบังเอิญราคาเท่ากัน UNIQUE จะเหลือราคานั้นแค่ค่าเดียว

รูปแบบ UNIQUE(FILTER(…)) นี้ใช้บ่อยเวลาต้องกรองก่อนแล้วค่อยหาว่ามีค่าไม่ซ้ำกี่แบบในกลุ่มที่กรองมา

fx
=UNIQUE(FILTER(D2:D6, C2:C6="ปิด"))

ผลลัพธ์590 | 8900 | 1750
ตัวอย่างที่ 6: นับจำนวน Unique ด้วย ROWSROWS(UNIQUE(C2:C6))

UNIQUE(C2:C6) คืนค่าสถานะที่ไม่ซ้ำออกมา 2 ค่าคือปิดกับเปิด แล้ว ROWS นับจำนวนแถวของผลลัพธ์นั้นออกมาเป็นตัวเลขเดียว

ได้คำตอบเท่ากับ 2 ซึ่งหมายความว่าในตารางนี้มีสถานะสินค้าอยู่ 2 แบบเท่านั้น

เทคนิคนี้สะดวกเวลาอยากรู้แค่จำนวนหมวดหมู่ที่ไม่ซ้ำ โดยไม่ต้องเอารายชื่อทั้งหมดมาแสดง เช่น เอาไปโชว์เป็นตัวเลขสรุปบนแดชบอร์ด

fx
=ROWS(UNIQUE(C2:C6))

ผลลัพธ์2

FAQs

#SPILL! error เกิดจากอะไร?+

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

by_col และ exactly_once ต่างกันอย่างไร?+

by_col กำหนดทิศทางการตรวจซ้ำ (แถว/คอลัมน์) ส่วน exactly_once กำหนดว่าจะคืนทุกค่าที่ไม่ซ้ำ หรือเฉพาะค่าที่พบครั้งเดียว

UNIQUE ต่างจาก Remove Duplicates อย่างไร?+

UNIQUE เป็นสูตรที่ return ผลลัพธ์ใหม่แบบไดนามิก ไม่แก้ไขข้อมูลต้นฉบับ ส่วน Remove Duplicates ลบแถวซ้ำจากข้อมูลจริง

ใช้ UNIQUE กับ Data Validation ได้ไหม?+

ได้ ใช้ชื่อสูตร =UNIQUE(Table[Column]) เป็น Source ของ dropdown ได้ แต่ต้องอ้างอิงด้วย # (Spill Reference) หรือ INDIRECT

UNIQUE รองรับ Excel เวอร์ชันไหน?+

Microsoft 365, Excel 2021, Excel 2024, และ Excel for Web เป็น Dynamic Array Function ไม่รองรับ Excel 2019 หรือเก่ากว่า

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ UNIQUE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้UNIQUELookup and reference
Lookup and reference (8)
DROP

DROP จะตัดข้อมูลออกตามจำนวนที่ระบุ ถ้าใส่เลขบวกจะตัดจากจุดเริ่มต้น (บน/ซ้าย) ทิ้งไป ถ้าใส่เลขลบจะตัดจากจุดสิ้นสุด (ล่าง/ขวา) ทิ้งไป ส่วนที่เหลือจะถูกนำมาแสดงผล

FILTER

FILTER กรองข้อมูลจาก Array ตามเงื่อนไขที่กำหนด แล้ว return เป็น Spill Range ที่ขยายอัตโนมัติ เป็น Dynamic Array Function ที่เปลี่ยนวิธีการทำงานกับข้อมูลใน Excel รองรับเงื่อนไขหลายตัว (AND/OR) และสามารถใช้ร่วมกับ SORT UNIQUE XLOOKUP เพื่อสร้างรายงานที่อัปเดตอัตโนมัติ

SORT

SORT เป็น Dynamic Array Function ที่เรียงลำดับข้อมูลจาก Array แล้ว return เป็น Spill Range ใหม่โดยไม่แก้ไขข้อมูลต้นฉบับ รองรับการเรียงตามคอลัมน์ที่ต้องการ (sort_index) ทั้งจากน้อยไปมาก (1) และมากไปน้อย (-1) รวมถึงเรียงแนวนอน (by_col=TRUE) ต่างจาก SORTBY ที่ใช้คอลัมน์ภายนอกเป็นเกณฑ์

SORTBY

SORTBY เรียงลำดับข้อมูลตาม Array อื่นที่กำหนด รองรับหลายระดับการเรียง (multi-level) และสามารถกำหนดลำดับเอง (custom sort order) ด้วย XMATCH ต่างจาก SORT ที่เรียงตามคอลัมน์ภายในตัวเอง SORTBY ใช้คอลัมน์ภายนอกเป็นเกณฑ์ได้

TAKE

TAKE ช่วยตัดข้อมูลบางส่วนออกมาใช้งาน โดยระบุจำนวนที่ต้องการ ถ้าใส่เลขบวกจะดึงจากจุดเริ่มต้น (บน/ซ้าย) ถ้าใส่เลขลบจะดึงจากจุดสิ้นสุด (ล่าง/ขวา) คล้ายกับคำสั่ง LIMIT หรือ TOP/BOTTOM ใน Database

TOCOL

TOCOL ช่วย "ตบ" ข้อมูลจากตารางหลายมิติให้มาเรียงต่อกันเป็นคอลัมน์เดียว สามารถเลือกวิธีเรียงลำดับได้ว่าจะอ่านจากซ้ายไปขวา (ทีละแถว) หรือบนลงล่าง (ทีละคอลัมน์) และยังมี Option ให้กรองช่องว่างหรือ Error ทิ้งไปโดยอัตโนมัติ เหมาะสำหรับการเตรียมข้อมูล (Data Preparation)

TRIMRANGE

ฟังก์ชันใหม่ใน Excel 365 ที่ตัดแถวและคอลัมน์ว่างออกจากขอบของช่วงข้อมูล ช่วยให้การอ้างอิงช่วงกว้าง ๆ หรือทั้งคอลัมน์ปลอดภัยและไม่ดึงข้อมูลว่างเข้ามาปนกับสูตร dynamic array

XLOOKUP

ฟังก์ชัน XLOOKUP ใช้สำหรับค้นหาข้อมูลในตารางทั้งแนวตั้งและแนวนอน มีความยืดหยุ่นสูงกว่า VLOOKUP โดยสามารถค้นหาจากซ้ายไปขวา ขวาไปซ้าย และกำหนดค่าเริ่มต้นเมื่อไม่พบข้อมูลได้

Statistical (2)
FREQUENCY

FREQUENCY นับจำนวนค่าที่ตกอยู่ในแต่ละช่วงที่กำหนด และคืนค่าเป็น Array แนวตั้ง เหมาะสำหรับสร้าง Histogram และวิเคราะห์การกระจายข้อมูล

MODE.MULT

MODE.MULT ค้นหาค่าที่ซ้ำกันมากที่สุด (ฐานนิยม) ของข้อมูล และคืนค่าเป็น Array หากมีหลายค่าที่ซ้ำเท่าๆ กัน

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่