UNIQUE เป็น Dynamic Array Function ที่คืนค่าที่ไม่ซ้ำจาก Array โดยสามารถตรวจซ้ำตามแถวหรือคอลัมน์ (by_col) และเลือกคืนเฉพาะค่าที่พบครั้งเดียว (exactly_once) ผลลัพธ์เป็น Spill Range ที่อัปเดตอัตโนมัติ ใช้ร่วมกับ SORT FILTER COUNTIF เพื่อสร้างรายงานไดนามิกและ dropdown ที่อัปเดตเอง
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| array | Range/Array | ช่วงข้อมูลหรือ Array ที่ต้องการหาค่าไม่ซ้ำ (return ค่าที่ไม่ซ้ำจาก array นี้) | |
| [by_col]ไม่บังคับ | Boolean | FALSE | FALSE = ตรวจซ้ำตามแถว (แนวตั้ง), TRUE = ตรวจซ้ำตามคอลัมน์ (แนวนอน) |
| [exactly_once]ไม่บังคับ | Boolean | FALSE | FALSE = คืนค่าที่ไม่ซ้ำทั้งหมด, TRUE = คืนเฉพาะค่าที่พบครั้งเดียวเท่านั้น |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
UNIQUE เป็น Dynamic Array Function ที่ดึงค่าที่ไม่ซ้ำจาก Array หรือ Range แล้ว return เป็น Spill Range ที่ขยายอัตโนมัติ รองรับการตรวจซ้ำแบบแถว (by_col=FALSE) หรือคอลัมน์ (by_col=TRUE) และสามารถคืนเฉพาะค่าที่เกิดครั้งเดียว (exactly_once=TRUE) ใช้ร่วมกับ SORT, FILTER เพื่อสร้างรายการ dropdown หรือ dashboard แบบไดนามิก
คัดรายชื่อทีม/สินค้าไม่ซ้ำเพื่อใช้เป็นแหล่งข้อมูล Data Validation
ใช้ exactly_once=TRUE เพื่อหา outlier หรือค่าที่เกิดครั้งเดียว
ใช้ UNIQUE ก่อน SUMIFS เพื่อได้รายการหัวข้อที่ไม่ซ้ำ
| 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 |
ทุกสูตรด้านล่างอ้างถึงตารางนี้ พิมพ์ตามได้เลย ผลลัพธ์จะตรงกับที่เขียนไว้
UNIQUE ไล่ดูคอลัมน์สถานะ (C2:C6) ทีละแถว แล้วเก็บเฉพาะค่าที่ยังไม่เคยเจอมาก่อน เรียงตามลำดับที่เจอครั้งแรกในตาราง ไม่ใช่เรียง A-Z
ปิดเจอครั้งแรกที่แถว P001 มาก่อน เปิดเจอครั้งแรกที่แถว P002 ผลลัพธ์เลยได้ "ปิด" ขึ้นก่อน "เปิด" แม้ในตารางจะมีปิดซ้ำถึง 3 ครั้งก็ตาม
ผลลัพธ์นี้เอาไปทำ dropdown เลือกสถานะได้เลย เพราะมีแค่ 2 ค่าไม่ซ้ำ แทนที่จะให้ผู้ใช้เลือกจากสถานะทั้ง 5 แถวดิบๆ
ตัวอย่างนี้ดูเฉพาะ 3 แถวแรกของคอลัมน์สถานะ (C2:C4) ซึ่งมีค่าคือ ปิด เปิด ปิด ตามลำดับ argument ที่สาม exactly_once ใส่เป็น TRUE จึงคืนเฉพาะค่าที่ปรากฏครั้งเดียวในช่วงนั้นเท่านั้น
ปิดปรากฏ 2 ครั้งในช่วงนี้เลยถูกตัดออก เหลือแค่ "เปิด" ที่ปรากฏครั้งเดียว (จาก P002) ผลลัพธ์จึงมีค่าเดียว
ต่างจาก UNIQUE ธรรมดาที่จะคืนทั้งปิดและเปิดโดยไม่สนว่าซ้ำกี่ครั้ง exactly_once ใช้หาค่าที่ไม่เหมือนใครเลยในช่วงข้อมูลนั้น เช่น หาลูกค้าที่ซื้อครั้งเดียว
UNIQUE หาค่าสถานะที่ไม่ซ้ำได้ "ปิด" กับ "เปิด" ก่อน (เรียงตามลำดับที่เจอในตาราง) แล้ว SORT ห่อรอบนอกอีกชั้นเพื่อเรียงตามลำดับตัวอักษรแทนลำดับที่เจอ
พอไม่ระบุ sort_index กับ sort_order สูตรจะเรียงจากน้อยไปมากตามค่าเริ่มต้น ได้ผลลัพธ์เรียงตามตัวอักษรไทย
แพทเทิร์น SORT(UNIQUE(…)) แบบนี้เหมาะมากกับการทำรายการ dropdown ที่อยากให้ตัวเลือกเรียงเป็นระเบียบ ไม่ใช่เรียงตามว่าใครมาก่อนมาหลังในตารางต้นฉบับ
คราวนี้ให้ UNIQUE ดูทั้ง 2 คอลัมน์พร้อมกันคือสถานะและราคา (C2:D6) การเช็คซ้ำจะเช็คทั้งแถว ไม่ใช่แค่คอลัมน์เดียว
แม้สถานะจะซ้ำกันได้ (ปิดซ้ำ 3 ครั้ง) แต่พอจับคู่กับราคาที่ไม่เหมือนกันสักแถวเลย ทำให้ทั้งคู่ (สถานะ, ราคา) ไม่ซ้ำกันเลยสักแถว UNIQUE จึงคืนมาครบทั้ง 5 แถวเหมือนเดิม
ถ้าในตารางมีสองแถวที่ทั้งสถานะและราคาตรงกันเป๊ะ แถวที่ซ้ำนั้นถึงจะถูกตัดออกไปเหลือแถวเดียว นี่คือความต่างจากการเช็คซ้ำแค่คอลัมน์เดียว
กรองเอาเฉพาะราคาของสินค้าสถานะปิดออกมาก่อนด้วย FILTER ได้ 590, 8900, 1750 แล้วครอบด้วย UNIQUE อีกชั้น
ในกรณีนี้ราคาทั้งสามค่าไม่ซ้ำกันอยู่แล้ว UNIQUE เลยไม่ได้ตัดอะไรออกเพิ่ม แต่ถ้าสินค้าสถานะปิดสองรายการบังเอิญราคาเท่ากัน UNIQUE จะเหลือราคานั้นแค่ค่าเดียว
รูปแบบ UNIQUE(FILTER(…)) นี้ใช้บ่อยเวลาต้องกรองก่อนแล้วค่อยหาว่ามีค่าไม่ซ้ำกี่แบบในกลุ่มที่กรองมา
UNIQUE(C2:C6) คืนค่าสถานะที่ไม่ซ้ำออกมา 2 ค่าคือปิดกับเปิด แล้ว ROWS นับจำนวนแถวของผลลัพธ์นั้นออกมาเป็นตัวเลขเดียว
ได้คำตอบเท่ากับ 2 ซึ่งหมายความว่าในตารางนี้มีสถานะสินค้าอยู่ 2 แบบเท่านั้น
เทคนิคนี้สะดวกเวลาอยากรู้แค่จำนวนหมวดหมู่ที่ไม่ซ้ำ โดยไม่ต้องเอารายชื่อทั้งหมดมาแสดง เช่น เอาไปโชว์เป็นตัวเลขสรุปบนแดชบอร์ด
เกิดเมื่อเซลล์ด้านล่างไม่ว่าง ทำให้ผลลัพธ์ Spill ไม่ได้ ล้างเซลล์ที่ขวางหรือย้ายสูตรไปที่ว่าง
by_col กำหนดทิศทางการตรวจซ้ำ (แถว/คอลัมน์) ส่วน exactly_once กำหนดว่าจะคืนทุกค่าที่ไม่ซ้ำ หรือเฉพาะค่าที่พบครั้งเดียว
UNIQUE เป็นสูตรที่ return ผลลัพธ์ใหม่แบบไดนามิก ไม่แก้ไขข้อมูลต้นฉบับ ส่วน Remove Duplicates ลบแถวซ้ำจากข้อมูลจริง
ได้ ใช้ชื่อสูตร =UNIQUE(Table[Column]) เป็น Source ของ dropdown ได้ แต่ต้องอ้างอิงด้วย # (Spill Reference) หรือ INDIRECT
Microsoft 365, Excel 2021, Excel 2024, และ Excel for Web เป็น Dynamic Array Function ไม่รองรับ Excel 2019 หรือเก่ากว่า
ฟังก์ชันที่ผู้เขียนโยงไว้กับ UNIQUE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
DROP จะตัดข้อมูลออกตามจำนวนที่ระบุ ถ้าใส่เลขบวกจะตัดจากจุดเริ่มต้น (บน/ซ้าย) ทิ้งไป ถ้าใส่เลขลบจะตัดจากจุดสิ้นสุด (ล่าง/ขวา) ทิ้งไป ส่วนที่เหลือจะถูกนำมาแสดงผล
FILTER กรองข้อมูลจาก Array ตามเงื่อนไขที่กำหนด แล้ว return เป็น Spill Range ที่ขยายอัตโนมัติ เป็น Dynamic Array Function ที่เปลี่ยนวิธีการทำงานกับข้อมูลใน Excel รองรับเงื่อนไขหลายตัว (AND/OR) และสามารถใช้ร่วมกับ SORT UNIQUE XLOOKUP เพื่อสร้างรายงานที่อัปเดตอัตโนมัติ
SORT เป็น Dynamic Array Function ที่เรียงลำดับข้อมูลจาก Array แล้ว return เป็น Spill Range ใหม่โดยไม่แก้ไขข้อมูลต้นฉบับ รองรับการเรียงตามคอลัมน์ที่ต้องการ (sort_index) ทั้งจากน้อยไปมาก (1) และมากไปน้อย (-1) รวมถึงเรียงแนวนอน (by_col=TRUE) ต่างจาก SORTBY ที่ใช้คอลัมน์ภายนอกเป็นเกณฑ์
SORTBY เรียงลำดับข้อมูลตาม Array อื่นที่กำหนด รองรับหลายระดับการเรียง (multi-level) และสามารถกำหนดลำดับเอง (custom sort order) ด้วย XMATCH ต่างจาก SORT ที่เรียงตามคอลัมน์ภายในตัวเอง SORTBY ใช้คอลัมน์ภายนอกเป็นเกณฑ์ได้
TAKE ช่วยตัดข้อมูลบางส่วนออกมาใช้งาน โดยระบุจำนวนที่ต้องการ ถ้าใส่เลขบวกจะดึงจากจุดเริ่มต้น (บน/ซ้าย) ถ้าใส่เลขลบจะดึงจากจุดสิ้นสุด (ล่าง/ขวา) คล้ายกับคำสั่ง LIMIT หรือ TOP/BOTTOM ใน Database
TOCOL ช่วย "ตบ" ข้อมูลจากตารางหลายมิติให้มาเรียงต่อกันเป็นคอลัมน์เดียว สามารถเลือกวิธีเรียงลำดับได้ว่าจะอ่านจากซ้ายไปขวา (ทีละแถว) หรือบนลงล่าง (ทีละคอลัมน์) และยังมี Option ให้กรองช่องว่างหรือ Error ทิ้งไปโดยอัตโนมัติ เหมาะสำหรับการเตรียมข้อมูล (Data Preparation)
ฟังก์ชันใหม่ใน Excel 365 ที่ตัดแถวและคอลัมน์ว่างออกจากขอบของช่วงข้อมูล ช่วยให้การอ้างอิงช่วงกว้าง ๆ หรือทั้งคอลัมน์ปลอดภัยและไม่ดึงข้อมูลว่างเข้ามาปนกับสูตร dynamic array
ฟังก์ชัน XLOOKUP ใช้สำหรับค้นหาข้อมูลในตารางทั้งแนวตั้งและแนวนอน มีความยืดหยุ่นสูงกว่า VLOOKUP โดยสามารถค้นหาจากซ้ายไปขวา ขวาไปซ้าย และกำหนดค่าเริ่มต้นเมื่อไม่พบข้อมูลได้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่