Thep Excel

List.Sortเรียงลำดับรายการ

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

fx
=List.Sort(list, [comparisonCriteria]) as list

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
list List รายการที่ต้องการเรียงลำดับ เป็น List ที่มีข้อมูลเป็นหมายเลข ข้อความ วันที่ หรือค่าอื่นๆ ที่สามารถเปรียบเทียบได้
[comparisonCriteria]ไม่บังคับ Any Order.Ascending ตัวเลือกการเรียงลำดับ – สามารถเป็น Order.Ascending (ค่าเริ่มต้น) หรือ Order.Descending หรือฟังก์ชันเปรียบเทียบแบบกำหนดเอง ถ้าไม่ระบุ จะเรียงจากน้อยไปมากโดยอัตโนมัติ

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

Additional Notes

ฟังก์ชัน List.Sort ใช้สำหรับเรียงลำดับสมาชิกในรายการ (List) ตามลำดับที่ต้องการ เป็นเครื่องมือพื้นฐานที่มีประโยชน์เมื่อต้องจัดระเบียบข้อมูลตัวเลข ข้อความ หรือค่าใดๆ ที่สามารถเปรียบเทียบได้

ที่เจ๋งคือ List.Sort ยืดหยุ่นมาก – เราสามารถเรียงโดยค่าแรกๆ หรือกำหนดวิธีเปรียบเทียบแบบแนวทางเอง ตัวอย่างเช่น เรียงตามค่ากลับกัน (reciprocal) หรือเรียงตามเงื่อนไขที่ซับซ้อนโดยใช้ฟังก์ชันเปรียบเทียบ

ส่วนตัวผม มักใช้ List.Sort สำหรับการจัดระเบียบข้อมูลเบื้องต้น เช่น เรียงหมายเลขสั่งซื้อ คะแนนสอบ หรือชื่อตัวอักษรก่อนประมวลผลต่อไป ทำให้เห็นรูปแบบของข้อมูลได้ชัดเจนขึ้น 😎

Examples

เรียงจำนวนแบบพื้นฐาน (น้อยไปมาก)List.Sort({3, 1, 4, 1, 5, 9, 2})

เรียงรายการหมายเลขจากน้อยไปมาก ใช้ค่าเริ่มต้น Order.Ascending โดยไม่ต้องระบุ comparisonCriteria

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

ผลลัพธ์{1, 1, 2, 3, 4, 5, 9}
เรียงแบบมากไปน้อยList.Sort({3, 1, 4, 1, 5, 9, 2}, Order.Descending)

ระบุ Order.Descending เพื่อเรียงจากค่ามากสุดลงไปน้อยสุด

fx
= List.Sort({3, 1, 4, 1, 5, 9, 2}, Order.Descending)

ผลลัพธ์{9, 5, 4, 3, 2, 1, 1}
เรียงข้อความตามตัวอักษรList.Sort({"zebra", "apple", "banana", "cherry"})

List.Sort ทำงานกับข้อความได้เช่นกัน เรียงตามลำดับตัวอักษรอัตโนมัติจากน้อยไปมาก

fx
= List.Sort({"zebra", "apple", "banana", "cherry"})

ผลลัพธ์{"apple", "banana", "cherry", "zebra"}
เรียงโดยใช้ฟังก์ชันเปรียบเทียบแบบกำหนดเองlet Numbers = {3, 1, 4, 1, 5, 9, 2}, SortByReciprocal = List.Sort(Numbers, (x, y) => Value.Compare(1/x, 1/y)) in SortByReciprocal

ใช้ฟังก์ชันเปรียบเทียบสองพารามิเตอร์ (x, y) => Value.Compare(…) เพื่อเรียงตามค่าส่วนกลับ (reciprocal) ของหมายเลข ค่าน้อยที่สุดจึงอยู่ท้ายสุด

fx
let
Numbers = {3, 1, 4, 1, 5, 9, 2},
SortByReciprocal = List.Sort(Numbers, (x, y) => Value.Compare(1/x, 1/y))
in
SortByReciprocal

ผลลัพธ์{9, 5, 4, 3, 2, 1, 1}

FAQs

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

List.Sort เรียงค่าในรายการโดยตรง ส่วน List.SortBy ใช้เมื่อต้องเรียงตามค่าที่คำนวณหรือค่าช่องที่ระบุในตัวเลือก ตัวอย่าง: List.SortBy(listOfNumbers, each 1/_) เรียงตามค่าส่วนกลับ

สามารถเรียงรายการที่มีค่าชนิดต่างๆ ได้ไหม?+

ไม่แนะนำ List.Sort ออกแบบมาสำหรับเรียงค่าชนิดเดียวกัน ถ้ามีหมายเลขและข้อความปนกัน อาจเกิดข้อผิดพลาด ควรทำให้ข้อมูลเป็นชนิดเดียวกันก่อน

ถ้ารายการว่าง (empty) หรือมี null ค่าจะเป็นอย่างไร?+

รายการว่าง {} จะคืน {} เสมอ ถ้ามี null ใน List คุณอาจต้องกรองออกก่อนเรียงหรือจัดการในฟังก์ชันเปรียบเทียบแบบกำหนดเอง

เรียงได้เร็วแค่ไหนสำหรับรายการขนาดใหญ่?+

List.Sort ใช้ประสิทธิภาพเพียงพอสำหรับรายการที่มีหลักพัน หมื่น หรือแม้แต่แสนค่า ถ้าเรียงจำนวนมากมาย (เช่น ล้านค่า) อาจใช้เวลา แต่ยังรับได้ส่วนมาก

Resources & Related

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

ฟังก์ชันนี้List.SortList functions
List functions (4)
List.Distinct

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

List.MaxN

List.MaxN คืนค่าสูงสุด N ตัวแรก หรือค่าที่ผ่านเงื่อนไขจาก List โดยเรียงลำดับจากมากไปน้อย

List.MinN

List.MinN คืนค่าต่ำสุด N ตัวแรก หรือค่าที่ผ่านเงื่อนไขจาก List โดยเรียงลำดับจากน้อยไปมาก

List.Reverse

List.Reverse จะคืน List ใหม่ที่สมาชิกทั้งหมดเรียงลำดับแบบกลับกันจาก List ต้นฉบับ โดยที่สมาชิกแต่ละตัวจะยังคงเดิม แต่ตำแหน่งจะเปลี่ยนไป

Comments

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