Thep Excel

List.IsDistinctตรวจสอบว่าสมาชิกใน List ไม่ซ้ำกันเลยหรือไม่

List.IsDistinct ตรวจสอบว่า List มีค่าซ้ำหรือไม่ คืนค่า true ถ้าไม่มีตัวซ้ำเลย

fx
=List.IsDistinct(list, [equationCriteria]) as logical

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
list list List ที่ต้องการตรวจสอบ
[equationCriteria]ไม่บังคับ any null ตัวเลือกเสริมสำหรับกำหนดเกณฑ์การเปรียบเทียบ (เช่น Comparer.OrdinalIgnoreCase)

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

Additional Notes

List.IsDistinct ตรวจสอบว่าสมาชิกทั้งหมดใน List แตกต่างกัน (ไม่ซ้ำกัน) หากไม่มีตัวซ้ำเลยจะคืนค่า true แต่มีตัวซ้ำแม้แต่ 1 คู่ก็จะคืนค่า false ฟังก์ชันนี้ยังรองรับการเปรียบเทียบแบบกำหนดเองได้ผ่านตัวเลือก equationCriteria

ที่เจ๋งคือ ผมใช้มันเพื่อตรวจสอบคุณภาพข้อมูลก่อนการประมวลผลต่อไป เช่นตรวจสอบว่า ID ในตารางซ้ำหรือไม่ มันตรงไปตรงมากว่า true/false จึงดีกว่าการนับจำนวนรายการ

ส่วนตัวผม ผมชอบใช้ List.IsDistinct ร่วมกับ Comparer.OrdinalIgnoreCase เวลาทำงานกับข้อมูลที่มีตัวพิมพ์ผสมกัน เป็นวิธีที่ลึกลับแต่มีประสิทธิภาพ 😎

How it works

ตรวจสอบคุณภาพข้อมูล (Data Quality)

ใช้ตรวจสอบคอลัมน์ที่ควรจะเป็น Primary Key (ห้ามซ้ำ) ว่ามีค่าซ้ำหลุดมาหรือไม่

Validation ก่อนประมวลผล

ตรวจสอบว่ารายการ Input ไม่มีการป้อนข้อมูลซ้ำก่อนที่จะนำไปคำนวณต่อ

Examples

ตัวอย่างที่ 1: List ที่ไม่มีตัวซ้ำList.IsDistinct({1, 2, 3})

สมาชิก 1, 2, 3 ไม่ซ้ำกันเลย จึงคืนค่า true

fx
=List.IsDistinct({1, 2, 3})

ผลลัพธ์true
ตัวอย่างที่ 2: List ที่มีตัวซ้ำList.IsDistinct({1, 2, 3, 3})

มีเลข 3 ซ้ำกัน 2 ตัว จึงคืนค่า false

fx
=List.IsDistinct({1, 2, 3, 3})

ผลลัพธ์false
ตัวอย่างที่ 3: ตรวจสอบแบบไม่สนใจตัวพิมพ์เล็ก-ใหญ่List.IsDistinct({"A", "a", "b"}, Comparer.OrdinalIgnoreCase)

ปกติ "A" กับ "a" ถือว่าต่างกัน (Distinct) แต่เมื่อใช้ Comparer.OrdinalIgnoreCase จะถือว่าซ้ำกัน จึงคืนค่า false

fx
=List.IsDistinct({"A", "a", "b"}, Comparer.OrdinalIgnoreCase)

ผลลัพธ์false
ตัวอย่างที่ 4: ตรวจสอบ List ว่างList.IsDistinct({})

List ว่างไม่มีตัวซ้ำ ดังนั้นจึงคืนค่า true (ไม่มีค่าใดที่ซ้ำกัน)

fx
=List.IsDistinct({})

ผลลัพธ์true

FAQs

List.IsDistinct ต่างจาก List.Distinct อย่างไร?+

ผมอธิบายง่ายๆ List.IsDistinct คืนค่า True/False (เพื่อตรวจสอบ) ส่วน List.Distinct คืนค่าเป็น List ใหม่ที่ตัดตัวซ้ำออกแล้ว (เพื่อจัดการข้อมูล) ผมใช้ IsDistinct เมื่อต้องการแค่ตรวจสอบ

ใช้กับค่า Null หรือค่าว่างได้ไหม?+

ได้ ผม List.IsDistinct({1, null, null}) ก็คืนค่า false เพราะ null ถือว่าเป็นค่าซ้ำกัน Null ที่ซ้ำกันถือเป็นการไม่ Distinct

ใช้กับ List ของ Record ได้ไหม?+

ได้ แต่ผมแนะนำให้ใช้ equationCriteria เพื่อกำหนดว่าจะเปรียบเทียบ Field ไหนของ Record ถ้าไม่ระบุมันจะเปรียบเทียบ Record ทั้งหมด

Resources & Related

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

ฟังก์ชันนี้List.IsDistinctList functions
List functions (2)
List.Count

List.Count ใช้นับจำนวนสมาชิกทั้งหมดในลิสต์ (รวม null) ส่งคืนค่าตัวเลข ถ้าต้องการนับเฉพาะที่ไม่ว่างให้ใช้ List.NonNullCount แทน

List.Distinct

List.Distinct จะคืน List ใหม่ที่ไม่มีค่าซ้ำกัน โดยเก็บสมาชิกตัวแรกที่พบไว้ และทิ้งตัวที่ซ้ำกันทิ้งไป สามารถกำหนด Comparer เพื่อใช้ Logic การเปรียบเทียบที่แตกต่างกันได้ เช่น ไม่สนใจตัวพิมพ์เล็ก/ใหญ่

Comments

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