Thep Excel

List.Distinctลบค่าซ้ำออกจาก List

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

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

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
list list List ที่ต้องการลบค่าซ้ำ
[equationCriteria]ไม่บังคับ function or list Comparer.Ordinal (Case Sensitive) กำหนดวิธีเปรียบเทียบ สามารถใช้ Comparer (เช่น Comparer.OrdinalIgnoreCase) หรือ Key Selector function ได้

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

Additional Notes

ฟังก์ชัน List.Distinct ใน Power Query ใช้สำหรับลบค่าที่ซ้ำกันทั้งหมดออกจาก List โดยจะคืน List ใหม่ที่มีเฉพาะค่าที่ไม่ซ้ำกัน (Unique Values).

ส่วนตัวผม List.Distinct นี่เป็นเครื่องมือสำคัญเวลาต้องทำ Data Cleanup ครับ เช่น ดึงรายการสินค้า Category ที่ไม่ซ้ำกันจากตารางใหญ่ๆ หรือสร้าง Dropdown List ของเมืองต่างๆ ที่ไม่ซ้ำ

เจ๋งที่สุดของ List.Distinct คือสามารถกำหนดวิธีเปรียบเทียบโดยใช้ Comparer ได้ครับ ตัวอย่างเช่น ถ้าใช้ Comparer.OrdinalIgnoreCase มันจะถือว่า “APPLE” กับ “apple” เป็นค่าเดียวกัน ตัวแรกที่มาจะเก็บไว้

How it works

สร้าง Master List

ดึงรายชื่อลูกค้า หรือรายชื่อสินค้าที่ไม่ซ้ำกันจากฐานข้อมูลขนาดใหญ่

สร้าง Dropdown List

ใช้เป็น Source สำหรับ Filter หรือ Parameter ที่ต้องการ List ตัวเลือกที่ไม่ซ้ำ

ทำความสะอาดข้อมูล

ลบค่าที่ซ้ำซ้อนออก เพื่อเตรียมข้อมูลสำหรับการวิเคราะห์

Examples

ตัวอย่างที่ 1: ลบค่าซ้ำตัวเลขพื้นฐานList.Distinct({1, 2, 5, 5, 4, 4, 4, 3, 3})

ตัวเลขที่ซ้ำกันถูกลบออก เหลือแต่ค่าที่ไม่ซ้ำ โดยเก็บตัวแรกที่พบไว้

fx
= List.Distinct({1, 2, 5, 5, 4, 4, 4, 3, 3})

ผลลัพธ์{1, 2, 5, 4, 3}
ตัวอย่างที่ 2: ลบค่าซ้ำข้อความ (Case Sensitive)List.Distinct({"Apple", "apple", "Banana"})

เนื่องจากค่าเริ่มต้นเป็น Case Sensitive "Apple" ไม่เท่ากับ "apple" จึงถือว่าเป็นคนละค่า

fx
= List.Distinct({"Apple", "apple", "Banana"})

ผลลัพธ์{"Apple", "apple", "Banana"}
ตัวอย่างที่ 3: ลบค่าซ้ำข้อความ (Case Insensitive)List.Distinct({"Apple", "apple", "Banana"}, Comparer.OrdinalIgnoreCase)

ใช้ Comparer.OrdinalIgnoreCase เพื่อไม่สนใจตัวพิมพ์เล็ก/ใหญ่ ทำให้ "Apple" และ "apple" ถือเป็นค่าเดียวกัน เก็บตัวแรก

fx
= List.Distinct({"Apple", "apple", "Banana"}, Comparer.OrdinalIgnoreCase)

ผลลัพธ์{"Apple", "Banana"}
ตัวอย่างที่ 4: ลบค่าซ้ำจากคอลัมน์ตารางlet Sales = Table.FromRows({{"Bangkok", 1500}, {"Chiang Mai", 2000}, {"Bangkok", 1800}}, {"City", "Revenue"}), Cities = Table.Column(Sales, "City"), UniqueCitie…

ดึงค่าจากคอลัมน์ City แล้วลบซ้ำออก เหลือเมืองที่ไม่ซ้ำกันเพื่อใช้เป็น Dropdown หรือ List สำหรับ Vlookup

fx
let
Sales = Table.FromRows({{"Bangkok", 1500}, {"Chiang Mai", 2000}, {"Bangkok", 1800}}, {"City", "Revenue"}),
Cities = Table.Column(Sales, "City"),
UniqueCities = List.Distinct(Cities)
in
UniqueCities

ผลลัพธ์{"Bangkok", "Chiang Mai"}
ตัวอย่างที่ 5: ลบซ้ำตามความยาวข้อความ (Key Selector)let Fruits = {"Apple", "Banana", "Pear", "Fig", "Cherry"}, Result = List.Distinct(Fruits, each Text.Length(_)) in Result

ลบค่าซ้ำตามความยาว ถ้าคำว่า "Pear" (4 ตัว) และ "Apple" (5 ตัว) มีความยาวต่างกัน ก็เก็บทั้งสองตัว แต่ "Fig" (3 ตัว) และ "Pear" (4 ตัว) ต่างกัน เลยเก็บไว้

fx
let
Fruits = {"Apple", "Banana", "Pear", "Fig", "Cherry"},
Result = List.Distinct(Fruits, each Text.Length(_))
in
Result

ผลลัพธ์{"Apple", "Banana", "Pear"}

FAQs

List.Distinct เก็บตัวไหนเมื่อมีค่าซ้ำ?+

เก็บตัวแรกที่พบในลำดับเดิม ส่วนตัวที่ซ้ำหลังจากนั้นจะถูกทิ้ง

List.Distinct กับ List.Union ต่างกันอย่างไร?+

List.Union ใช้รวม 2 List และลบซ้ำ ส่วน List.Distinct ใช้ลบซ้ำจาก List เดียว นอกจากนี้ List.Union ไม่รับประกันลำดับ แต่ List.Distinct เก็บลำดับเดิม

สามารถลบซ้ำตามหลายคอลัมน์ได้ไหม?+

ไม่ได้โดยตรง แต่สามารถประมวลผล Table ก่อน ถ้าต้องการลบซ้ำตามหลายคอลัมน์ให้ใช้ Table.Distinct แทน

List.Distinct กับ List.Select ต่างกันอย่างไร?+

List.Distinct ลบค่าซ้ำ ส่วน List.Select ใช้กรองข้อมูลตามเงื่อนไข (เช่น เลือกเฉพาะค่าที่มากกว่า 10)

Comparer มีตัวไหนบ้าง?+

Comparer.Ordinal (Case Sensitive, ค่าเริ่มต้น) และ Comparer.OrdinalIgnoreCase (ไม่สนใจตัวพิมพ์) ส่วนใหญ่ใช้แค่สองตัวนี้

Resources & Related

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

ฟังก์ชันนี้List.DistinctList functions
List functions (6)
List.IsDistinct

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

List.RemoveItems

List.RemoveItems จะคืน List ใหม่ที่ไม่มีสมาชิกที่ตรงกับสมาชิกใน removeItems List โดยการเปรียบเทียบจะเป็นแบบ Case Sensitive และตรงกันทุกประการ (Ordinal Comparison)

List.RemoveMatchingItems

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

List.RemoveNulls

List.RemoveNulls ลบค่า null ทั้งหมดจากรายการ ใช้สำหรับการทำความสะอาดข้อมูล การลบข้อมูลที่หายไป และการเตรียมข้อมูล

List.Sort

เรียงลำดับสมาชิกในรายการตามเงื่อนไขที่กำหนด ไม่ว่าจะเป็นจากน้อยไปมากหรือมากไปน้อย

List.Union

รวม List โดยตัดตัวซ้ำออก (Set Union)

Table functions (2)
Table.Column

Table.Column ดึงค่าจากคอลัมน์เฉพาะออกมาจากตาราง และคืนค่าเป็น List เพื่อให้สามารถนำไปประมวลผลต่อได้

Table.Distinct

Table.Distinct ลบแถวที่ซ้ำกันออกจากตารางตามคอลัมน์ที่กำหนด หรือทั้งตารางถ้าไม่ระบุคอลัมน์

Comments

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