ฟังก์ชัน UNIQUE

ฟังก์ชัน 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

ใช้สูตร UNIQUE(array)

=UNIQUE(TESTSHEET[REG])
UNIQUE

จะได้ผลลัพธ์เฉพาะค่าที่ตัดซ้ำออกแล้ว 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)
Function UNIQUE

ผลลัพธ์จะออกเป็น #CALC เพราะในข้อมูลที่เห็นนี้ ไม่มีข้อมูลใดที่เกิดขึ้นเพียงแค่ครั้งเดียว

Function UNIQUE

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

อันนี้มีประโยชน์ตอนที่เราต้องการหาว่ามีอะไรที่เกิดขึ้นเพียงครั้งเดียวและไม่เกิดซ้ำอีก

=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

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


อ้างอิง เว็บไมโครซอฟต์

ความคิดเห็น