Thep Excel

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

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

=List.Distinct(list as list, optional equationCriteria as any) as list

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

=List.Distinct(list as list, optional equationCriteria as any) as list

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

How it works

สร้าง Master List

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

สร้าง Dropdown List

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

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

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

Examples

ตัวอย่างที่ 1: ลบค่าซ้ำตัวเลขพื้นฐาน
List.Distinct({1, 2, 5, 5, 4, 4, 4, 3, 3})
ตัวเลขที่ซ้ำกันถูกลบออก เหลือแต่ค่าที่ไม่ซ้ำ โดยเก็บตัวแรกที่พบไว้
Power Query Formula:

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

Result:

{1, 2, 5, 4, 3}

ตัวอย่างที่ 2: ลบค่าซ้ำข้อความ (Case Sensitive)
List.Distinct({"Apple", "apple", "Banana"})
เนื่องจากค่าเริ่มต้นเป็น Case Sensitive "Apple" ไม่เท่ากับ "apple" จึงถือว่าเป็นคนละค่า
Power Query Formula:

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

Result:

{"Apple", "apple", "Banana"}

ตัวอย่างที่ 3: ลบค่าซ้ำข้อความ (Case Insensitive)
List.Distinct({"Apple", "apple", "Banana"}, Comparer.OrdinalIgnoreCase)
ใช้ Comparer.OrdinalIgnoreCase เพื่อไม่สนใจตัวพิมพ์เล็ก/ใหญ่ ทำให้ "Apple" และ "apple" ถือเป็นค่าเดียวกัน เก็บตัวแรก
Power Query Formula:

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

Result:

{"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
Power Query Formula:

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

Result:

{"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 ตัว) ต่างกัน เลยเก็บไว้
Power Query Formula:

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

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

Additional Notes

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *