เคยต้องดึง “รายชื่อที่ไม่ซ้ำ” ออกมาจากตารางยาวๆ ไหมครับ เช่น อยากรู้ว่าปีนี้ครอบครัวซื้อของกี่คน มีใครบ้าง หรืออยากดูว่าใช้จ่ายผ่านร้านค้าไหนบ้างโดยไม่เอาชื่อซ้ำมาเกะกะ ปกติหลายคนจะนึกถึงเมนู Remove Duplicates ทันที แต่จริงๆ แล้ว Excel 365 มีสูตรที่ทำงานได้ยืดหยุ่นกว่านั้นมาก นั่นคือ UNIQUE สูตรเดียวพิมพ์ครั้งเดียว ผลลัพธ์ไหลลงมาเองอัตโนมัติ แถมอัปเดตตามข้อมูลต้นฉบับตลอดเวลา บทความนี้จะพาไปทำความเข้าใจพร้อมตัวอย่างจำลองให้เห็นภาพจริง
UNIQUE คืออะไร ต่างจาก Remove Duplicates ยังไง
UNIQUE เป็นฟังก์ชันกลุ่ม dynamic array ที่เพิ่มเข้ามาใหม่ใน Excel 365 มีหน้าที่ดึงรายการที่ไม่ซ้ำจากช่วงข้อมูลที่กำหนด ออกมาแสดงเป็นชุดใหม่ จุดต่างสำคัญจากเมนู Remove Duplicates ที่หลายคนคุ้นเคยคือ
| รายการ | Remove Duplicates | UNIQUE |
| วิธีทำงาน | เมนูคำสั่ง กดแล้วลบข้อมูลซ้ำทิ้งถาวร | สูตร พิมพ์ในเซลล์แล้วคำนวณผลลัพธ์ให้ |
| ผลต่อข้อมูลต้นฉบับ | แก้ไข/ลบแถวข้อมูลเดิมออกจริง | ไม่แตะข้อมูลต้นฉบับเลย แสดงแยกอีกที่ |
| เมื่อข้อมูลต้นฉบับเปลี่ยน | ต้องกดคำสั่งซ้ำใหม่เอง | ผลลัพธ์อัปเดตอัตโนมัติทันที |
พูดง่ายๆ คือถ้าต้องการ “ล้าง” ข้อมูลซ้ำออกจากตารางจริงถาวร ให้ใช้ Remove Duplicates แต่ถ้าต้องการแค่ “ดู” รายการไม่ซ้ำแยกไว้อีกจุด โดยข้อมูลต้นฉบับยังอยู่ครบเหมือนเดิม UNIQUE คือคำตอบที่เหมาะกว่า
Syntax ของสูตร UNIQUE
รูปแบบสูตรคือ
=UNIQUE(array, [by_col], [exactly_once])
- array — ช่วงข้อมูลที่ต้องการดึงรายการไม่ซ้ำ (จำเป็นต้องใส่)
- by_col — ถ้าไม่ใส่หรือใส่ FALSE จะเทียบความซ้ำแบบรายแถว (ค่าเริ่มต้น) ถ้าใส่ TRUE จะเทียบความซ้ำแบบรายคอลัมน์แทน
- exactly_once — ถ้าไม่ใส่หรือใส่ FALSE จะดึงทุกค่าที่ไม่ซ้ำมาแสดง (ค่าที่เจอ 1 ครั้งหรือมากกว่าก็แสดง 1 ครั้ง) ถ้าใส่ TRUE จะดึงเฉพาะค่าที่ปรากฏ “ครั้งเดียวเท่านั้น” ในข้อมูล ค่าไหนซ้ำตั้งแต่ 2 ครั้งขึ้นไปจะไม่ถูกดึงมาเลย
จุดเด่นที่ทำให้ UNIQUE ต่างจากสูตรทั่วไปคือเป็น dynamic array — พิมพ์สูตรแค่เซลล์เดียว แต่ผลลัพธ์จะ “ล้น” (spill) ลงมาเติมเซลล์ว่างด้านล่างเองอัตโนมัติตามจำนวนรายการที่ไม่ซ้ำที่เจอ ไม่ต้องลากคัดลอกสูตรลงมาเองแบบสูตรรุ่นเก่า
ตัวอย่างใช้งานจริง: ดึงรายชื่อสมาชิกครอบครัวที่ไม่ซ้ำจากรายการซื้อของ
สมมติมีตารางบันทึกรายการซื้อของทั้งปีของครอบครัว คอลัมน์ A เป็นชื่อคนซื้อ ซึ่งแต่ละคนซื้อหลายครั้งจึงมีชื่อซ้ำเต็มไปหมด ต้องการดึงมาแค่ว่าครอบครัวนี้มีใครซื้อของบ้าง ไม่เอาชื่อซ้ำ
=UNIQUE(A2:A8)| A | B | C | |
|---|---|---|---|
| 1 | ผู้ซื้อ | รายการ | รายชื่อไม่ซ้ำ |
| 2 | แม่ | ข้าวสาร | แม่ |
| 3 | พ่อ | น้ำมันพืช | พ่อ |
| 4 | แม่ | ผงซักฟอก | น้อง |
| 5 | น้อง | สมุด | |
| 6 | พ่อ | น้ำมันเครื่อง | |
| 7 | แม่ | ผลไม้ | |
| 8 | น้อง | ปากกา |
พิมพ์สูตรแค่ที่เซลล์ C2 เซลล์เดียว แต่ผลลัพธ์ “แม่ พ่อ น้อง” ล้นลงมาเติมเซลล์ C3 และ C4 ให้เองโดยอัตโนมัติ (สังเกตกรอบเขียวที่ครอบทั้ง 3 เซลล์) ถ้าวันหลังมีคนในครอบครัวซื้อของเพิ่มเป็นคนที่ 4 ในคอลัมน์ A สูตรนี้จะล้นเพิ่มลงมาอีกแถวให้เองทันที ไม่ต้องแก้สูตรใหม่
ตัวอย่างใช้งานจริง: หาร้านค้าที่ใช้จ่ายแค่ครั้งเดียวด้วย exactly_once
อีกสถานการณ์ที่พบบ่อยคือดูประวัติการใช้จ่ายในบัญชี แล้วอยากรู้ว่ามี “ร้านที่ซื้อครั้งเดียวแล้วไม่ได้กลับไปซื้อซ้ำอีกเลย” บ้าง กรณีนี้ต้องใช้ argument ตัวที่ 3 คือ exactly_once เป็น TRUE
=UNIQUE(A2:A7,FALSE,TRUE)| A | B | C | |
|---|---|---|---|
| 1 | ร้านค้า | ยอดจ่าย | ซื้อครั้งเดียว |
| 2 | ร้านกาแฟหน้าปาก | 65 | ร้านซ่อมมือถือ |
| 3 | ร้านกาแฟหน้าปาก | 65 | ร้านหนังสือ |
| 4 | ซูเปอร์มาร์เก็ต | 890 | |
| 5 | ซูเปอร์มาร์เก็ต | 1,250 | |
| 6 | ร้านซ่อมมือถือ | 450 | |
| 7 | ร้านหนังสือ | 320 |
จากตัวอย่าง “ร้านกาแฟหน้าปาก” และ “ซูเปอร์มาร์เก็ต” ปรากฏมากกว่า 1 ครั้งจึงถูกตัดออกจากผลลัพธ์ ส่วน “ร้านซ่อมมือถือ” กับ “ร้านหนังสือ” ปรากฏแค่ครั้งเดียวเท่านั้นจึงถูกดึงมาแสดง ต่างจากการใส่ FALSE หรือไม่ใส่เลย ซึ่งจะดึงมาทุกร้านแบบไม่ซ้ำ (รวมร้านกาแฟกับซูเปอร์มาร์เก็ตด้วย)
ข้อควรระวังตอนใช้ UNIQUE
- ใช้ได้เฉพาะ Excel 365 หรือ Excel 2021 ขึ้นไป — ฟังก์ชันกลุ่ม dynamic array อย่าง UNIQUE ยังไม่มีใน Excel 2019 หรือรุ่นเก่ากว่านั้น ถ้าเปิดไฟล์ในเครื่องที่ใช้ Excel รุ่นเก่าจะขึ้น
#NAME?ทันที - ระวัง #SPILL! เวลาผลลัพธ์ล้นไม่ได้ — ถ้าเซลล์ด้านล่างที่ผลลัพธ์ต้องล้นลงไปมีข้อมูลอื่นขวางอยู่ก่อนแล้ว Excel จะไม่ทับข้อมูลเดิมให้ แต่จะแสดง Error
#SPILL!แทน วิธีแก้คือลบหรือย้ายข้อมูลที่ขวางอยู่ในเซลล์ด้านล่างออกก่อน - ห้ามพิมพ์สูตรซ้อนในเซลล์ที่เป็นพื้นที่ล้น — เซลล์ที่ผลลัพธ์ล้นไปถึงจะแก้ไขเองไม่ได้ ต้องแก้ที่สูตรต้นทางเซลล์แรกเท่านั้น
สรุป
UNIQUE เหมาะสำหรับใครที่ต้องการดูรายการไม่ซ้ำแบบไม่แตะข้อมูลต้นฉบับ และอยากให้ผลลัพธ์อัปเดตอัตโนมัติทุกครั้งที่ข้อมูลเปลี่ยน ต่างจาก Remove Duplicates ที่เหมาะกับตอนต้องการล้างข้อมูลซ้ำออกถาวร ใครที่เริ่มต้นใช้สูตรใน Excel แนะนำให้อ่านต่อที่ 10 สูตร Excel พื้นฐาน และถ้าสนใจสูตรค้นหาข้อมูลรุ่นใหม่ที่มาพร้อม dynamic array เหมือนกัน ลองดู XLOOKUP ต่างจาก VLOOKUP ยังไง เพิ่มเติมได้เลย