ฟังก์ชัน UNIQUE เป็นฟังก์ชันที่ใช้ในการค้นหาและส่งกลับค่าที่ไม่ซ้ำกันจากช่วงของข้อมูลใน Excel ฟังก์ชัน UNIQUE สามารถใช้ได้กับข้อมูลประเภทใดก็ได้ เช่น ข้อความ ตัวเลข วันที่ และเวลา
หมายเหตุ ฟังก์ชันนี้มีใน Microsoft 365 และ Excel 2016 เป็นต้นมาเท่านั้น ไม่สามารถใช้ฟังก์ชันนี้ในเวอร์ชันเก่ากว่าได้
วันนี้จะพูดถึงฟังก์ชันใน Excel ที่เรียกว่า UNIQUE
UNIQE แปลตรงตัวเลยว่า มีเอกลักษณ์ โดดเด่น ไม่เหมือนใคร เป็นฟังก์ชันสำหรับการแสดงค่าเฉพาะที่ตัดซ้ำออกไปแล้วเท่านั้น
คำว่า “ไม่ซ้ำ” นี้ มีสองความหมาย
ความหมายแรก หมายถึง “ไม่ซ้ำ” จริง ๆ คือมีเพียงแค่ 1 เดียวในกลุ่มนั้น ความหมายที่สอง หมายถึง เอาอันที่ซ้ำด้วย แต่ตัดซ้ำออก
ยกตัวอย่างให้เห็นก็แล้วกัน
สมมติว่าเรามีข้อมูล 6 ข้อมูล ดังต่อไปนี้
A B B C C C
ถ้า เราบอกว่า “ไม่ซ้ำ” ในความหมายแรก คือ เกิดขึ้นเพียงครั้งเดียว ในกลุ่มนี้คือ A เพราะเป็นตัวเดียวที่มีข้อมูลเพียง 1 ข้อมูล ไม่เกิดซ้ำอีก
แต่ ในความหมายที่สอง ไม่ซ้ำหมายถึง ตัดที่ซ้ำ ๆ ออกไปแล้ว ในกลุ่มนี้ จะได้ผลลัพธ์คือ A B และ C รวม 3 ข้อมูล
และทั้งสองอย่างนี้ เราหาได้โดยการใช้ฟังก์ชัน UNIQUE
การใช้งาน UNIQUE
ไวยากรณ์ของฟังก์ชันมีดังนี้
UNIQUE(array, [by_col], [exactly_once])
array คือช่วงของข้อมูลที่ต้องการค้นหาค่าที่ไม่ซ้ำกัน
by_col ระบุ TRUE หรือ FALSE เพื่อกำหนดว่าข้อมูลจะถูกจัดเรียงตามคอลัมน์หรือแถว หากไม่ได้ระบุอาร์กิวเมนต์นี้ ข้อมูลจะถูกจัดเรียงตามแถว (ไม่จำเป็นต้องระบุ)
- TRUE จะเปรียบเทียบคอลัมน์ระหว่างกันและส่งคืนคอลัมน์ที่ไม่ซ้ำ
- FALSE (หรือละเว้น) จะเปรียบเทียบแถวระหว่างกันและส่งคืนแถวที่ไม่ซ้ำ
exactly_once ระบุ TRUE หรือ FALSE เพื่อกำหนดจะส่งกลับเฉพาะค่าที่ไม่ซ้ำกันเท่านั้น หากไม่ได้ระบุอาร์กิวเมนต์นี้ ฟังก์ชัน UNIQUE จะส่งกลับค่าที่ไม่ซ้ำกันและค่าซ้ำกัน (ไม่จำเป็นต้องระบุ)
- TRUE จะส่งกลับแถวหรือคอลัมน์ที่แตกต่างกันทั้งหมดซึ่งเกิดขึ้นเพียงครั้งเดียวจากช่วงหรืออาร์เรย์
- FALSE (หรือละเว้น) จะส่งคืนแถวหรือคอลัมน์ที่แตกต่างกันทั้งหมดจากช่วงหรืออาร์เรย์
หมายเหตุ ใช้ 1-0 แทน TRUE-FALSE ได้
หมายเหตุ ฟังก์ชัน UNIQUE จะส่งกลับค่าในลักษณะอาร์เรย์ หากอาร์เรย์ที่ส่งกลับโดยใช้ฟังก์ชันนี้เป็นผลลัพธ์สุดท้าย (ไม่ทำงานด้วยฟังก์ชันอื่นต่อ) Excel จะสร้างช่วงที่มีขนาดเหมาะสมแบบไดนามิกและเติมข้อมูลด้วยผลลัพธ์ ดังนั้น ท่านจะต้องมีเซลล์ว่างเพียงพอด้านล่างและ/หรือทางด้านขวาของเซลล์ที่ป้อนสูตร มิฉะนั้นจะเกิดข้อผิดพลาด #SPILL
ผลลัพธ์จะอัปเดตโดยอัตโนมัติเมื่อข้อมูลต้นทางเปลี่ยนแปลง อย่างไรก็ตาม รายการใหม่ที่เพิ่มภายนอกอาร์เรย์อ้างอิงจะไม่รวมอยู่ในสูตร เว้นแต่จะเปลี่ยนการอ้างอิงอาร์เรย์ หากต้องการให้อาร์เรย์ปรับช่วงแหล่งที่มาโดยอัตโนมัติ ให้แปลงช่วงเป็น ExcelTable และใช้การอ้างอิงที่มีโครงสร้างหรือสร้างช่วงที่มีชื่อแบบไดนามิก
อาร์เรย์แบบไดนามิกระหว่างไฟล์ Excel ต่างๆ จะทำงานเฉพาะเมื่อสมุดงานทั้งสองเปิดอยู่เท่านั้น ถ้าสมุดงานต้นทางถูกปิด เมื่อใช้ฟังก์ชันนี้จะส่งกลับ #REF! ข้อผิดพลาด.
เช่นเดียวกับฟังก์ชันไดนามิกอาร์เรย์อื่นๆ UNIQUE สามารถใช้ได้เฉพาะภายในช่วงปกติ ไม่ใช่ ExcelTable หากท่านใช้สูตรจากฟังก์ชันนี้ใน ExcelTable อาจจะได้ค่าผิดพลาด #SPILL!
ExcelTable คืออะไร อ่านได้ที่บล็อกนี้!
การใช้ฟังก์ชัน UNIQUE
สมมติว่าเรามีข้อมูลตามตัวอย่าง ประมาณ 24,xxx แถว เราต้องการดูคอลัมน์ REG ว่ามีประเภทอะไรบ้าง ตารางนี้ทำเป็น ExcelTable ในชื่อ TESTSHEET
ใช้สูตร UNIQUE(array)
=UNIQUE(TESTSHEET[REG])
จะได้ผลลัพธ์เฉพาะค่าที่ตัดซ้ำออกแล้ว spill เรียงลงมาเป็นลำดับ
โปรดทราบว่าอาร์กิวเมนต์ที่ 2 และ 3 ไม่จำเป็นต้องใส่ เนื่องจากการมีการกำหนดค่าตั้งต้นเอาไว้แล้ว
=UNIQUE(TESTSHEET[REG],TRUE)
จะได้ผลลัพท์ spill เรียงลงมา เหมือนกับสำเนาเอาคอลัมน์ REG มาเลย
=UNIQUE(TESTSHEET[REG],FALSE)
จะได้ผลลัพธ์เฉพาะค่าที่ตัดซ้ำออกแล้ว เหมือน UNIQUE(TESTSHEET[REG]) เพราะค่า FALSE เป็นค่าตั้งต้น จะไม่ใส่ก็ได้
หากต้องการค่าที่ปรากฏในช่วงที่ระบุเพียงครั้งเดียว ให้ตั้งค่าอาร์กิวเมนต์ที่ 3 ของ UNIQUE เป็น TRUE เช่น ต้องการดึง REG ที่ปรากฏเพียง 1 ครั้ง ให้ใช้สูตรนี้
=UNIQUE(TESTSHEET[REG],,TRUE)
ผลลัพธ์จะออกเป็น #CALC เพราะในข้อมูลที่เห็นนี้ ไม่มีข้อมูลใดที่เกิดขึ้นเพียงแค่ครั้งเดียว
ถ้าเราลองแก้ไขข้อมูลหนึ่งให้เป็น ก ก็จะได้ผลลัพธ์เป็น ก เพราะมีตัวเดียวที่เกิดขึ้นครั้งเดียว
อันนี้มีประโยชน์ตอนที่เราต้องการหาว่ามีอะไรที่เกิดขึ้นเพียงครั้งเดียวและไม่เกิดซ้ำอีก
=UNIQUE(TESTSHEET[REG],, FALSE)
จะได้ผลลัพธ์เฉพาะค่าที่ตัดซ้ำออกแล้ว เหมือน UNIQUE(TESTSHEET[REG]) เพราะค่า FALSE เป็นค่าตั้งต้น จะไม่ใส่ก็ได้
อีกสิ่งหนึ่งที่หลายคนมองข้ามฟังก์ชันนี้ก็คือ ไม่ใช่แค่มองในแนวตั้ง (คอลัมน์) เดียวเท่านั้น แต่อาร์กิวเมนต์ลำดับที่ 1 ระบุไว้ชัดเจนว่า ทำงานกับ array ดังนั้นเราสามารถใช้งานกับทั้งแนว เช่น เราต้องการหาค่าชัดเจนโดยรวม 2 คอลัมน์ คือ PERSON กับ REG เราก็เขียนแบบนี้
=UNIQUE(TESTSHEET[[PERSON]:[REG]])
การพลิกแพลงสูตร
เรายังสามารถใช้ฟังก์ชันอื่นเพื่อพลิกแพลงสูตรให้ได้ผลลัพธ์อย่างที่ต้องการ
สำหรับฟังก์ชัน UNIQUE นี้ เราใช้เพื่อ
- หาค่าที่เกิดขึ้นเพียงครั้งเดียว
- เกิดขึ้นตั้งแต่ 1 ครั้งขึ้นไป
แต่ถ้าเราต้องการเฉพาะค่าเฉพาะที่เกิดขึ้นมากกว่า 1 ครั้งเท่านั้น เราจะทำอย่างไร?
คำตอบคือ เราต้องใช้ฟังก์ชันอื่น เช่น filter และ countif ช่วย
UNIQUE(FILTER(range, COUNTIF(range, range)>1))
ถ้าเขียนเป็นสูตรเพื่อดูที่คอลัมน์ REG เพียงคอลัมน์เดียว
=UNIQUE(FILTER(TESTSHEET[REG], COUNTIF(TESTSHEET[REG], TESTSHEET[REG])>1))
สูตรนี้จะใช้ฟังก์ชัน FILTER เพื่อกรองรายการที่ซ้ำกันตามจำนวนเหตุการณ์ที่ส่งกลับโดยฟังก์ชัน COUNTIF ว่ามากกว่า 1
สำหรับการทำงานเพื่อหาค่าที่ไม่ซ้ำกันจากข้อมูลจำนวนมาก หรือกรองข้อมูล รจัดกลุ่มข้อมูล เพื่อนำไปวิเคราะห์ข้อมูลต่าง ๆ จะมีประโยชน์มาก ใช้ได้กับข้อมูลประเภทใดก็ได้ เช่น ข้อความ ตัวเลข วันที่ และเวลา
อ้างอิง เว็บไมโครซอฟต์