Thep Excel

Table.Sortเรียงลำดับข้อมูลในตาราง

เรียงลำดับข้อมูลในตารางตามคอลัมน์ที่ระบุ รองรับการเรียงหลายระดับและกำหนดทิศทางการเรียง

fx
=Table.Sort(table, comparisonCriteria) as table

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
table Table ตารางที่ต้องการเรียงลำดับ
comparisonCriteria List เกณฑ์การเรียงลำดับ อาจเป็น: 1) ชื่อคอลัมน์เดียว (text) = เรียง ascending เป็นค่าเริ่มต้น 2) List ของ text = เรียงหลายคอลัมน์ตามลำดับ 3) List ของ {text, Order} = ระบุทิศทาง Order.Ascending หรือ Order.Descending

Additional Notes

Table.Sort ใช้สำหรับเรียงลำดับแถวในตารางตามเกณฑ์ที่ระบุ เหมือนกับการใช้ Sort ใน Excel แต่ทำงานในระดับ Power Query ได้ตั้งแต่เริ่มต้น ฟังก์ชันนี้รองรับการเรียงแบบ ascending (จากน้อยไปมาก) หรือ descending (จากมากไปน้อย) และสามารถเรียงตามหลายคอลัมน์พร้อมกันได้ ซึ่งมีประโยชน์เมื่อต้องการจัดข้อมูลตามลำดับความสำคัญหรือเตรียมข้อมูลสำหรับการวิเคราะห์เพิ่มเติม

Examples

เรียงตามคอลัมน์เดียว (Ascending)let Sales = #table( {"OrderID", "Amount"}, {{3, 500}, {1, 1200}, {2, 800}} ), Sorted = Table.Sort(Sales, {"OrderID"}) in Sorted

เรียงตาม OrderID จากน้อยไปมากแบบอัตโนมัติ (1, 2, 3) – ส่วนใหญ่เราใช้แบบนี้เวลาต้องเรียงลำดับที่เป็นตัวเลข

fx
let
Sales = #table(
{"OrderID", "Amount"},
{{3, 500}, {1, 1200}, {2, 800}}
),
Sorted = Table.Sort(Sales, {"OrderID"})
in
Sorted

ผลลัพธ์| OrderID | Amount |
|———|——–|
| 1 | 1200 |
| 2 | 800 |
| 3 | 500 |
เรียงลดลง (Descending) + ระบุ Order.Descendinglet Sales = #table( {"OrderID", "Amount"}, {{3, 500}, {1, 1200}, {2, 800}} ), Sorted = Table.Sort(Sales, {{"Amount", Order.Descending}}) in Sorted

เรียงตาม Amount จากมากไปน้อย ด้วย Order.Descending – ใช้เมื่อต้องการเห็นจำนวนที่มากที่สุดก่อน

fx
let
Sales = #table(
{"OrderID", "Amount"},
{{3, 500}, {1, 1200}, {2, 800}}
),
Sorted = Table.Sort(Sales, {{"Amount", Order.Descending}})
in
Sorted

ผลลัพธ์| OrderID | Amount |
|———|——–|
| 1 | 1200 |
| 2 | 800 |
| 3 | 500 |
เรียงหลายคอลัมน์ (Multi-Level Sort)let Sales = #table( {"Region", "Month", "Sales"}, {{"North", "Jan", 100}, {"South", "Jan", 250}, {"North", "Feb", 150}, {"South", "Feb", 200}} ), Sorted = Table…

เรียงแบบ 3 ระดับ: ตาม Region ก่อน (A-Z) แล้วตาม Month ถ้า Region เหมือนกัน สุดท้ายตาม Sales จากมากไปน้อย – เหมาะสำหรับรายงานที่ต้องจัดกลุ่มตามพื้นที่

fx
let
Sales = #table(
{"Region", "Month", "Sales"},
{{"North", "Jan", 100}, {"South", "Jan", 250}, {"North", "Feb", 150}, {"South", "Feb", 200}}
),
Sorted = Table.Sort(
Sales,
{{"Region", Order.Ascending}, {"Month", Order.Ascending}, {"Sales", Order.Descending}}
)
in
Sorted

ผลลัพธ์| Region | Month | Sales |
|——–|——-|——-|
| North | Feb | 150 |
| North | Jan | 100 |
| South | Feb | 200 |
| South | Jan | 250 |
เรียงข้อมูลตัวอักษร (Case Sensitive)let Names = #table( {"Name"}, {{"zebra"}, {"Apple"}, {"banana"}, {"Cherry"}} ), Sorted = Table.Sort(Names, {"Name"}) in Sorted

Power Query เรียงแบบ case-sensitive ตัวใหญ่มาก่อนตัวเล็ก ถ้าต้อง case-insensitive ให้แปลงเป็นตัวเล็กก่อนเรียง หรือใช้ Comparer

fx
let
Names = #table(
{"Name"},
{{"zebra"}, {"Apple"}, {"banana"}, {"Cherry"}}
),
Sorted = Table.Sort(Names, {"Name"})
in
Sorted

ผลลัพธ์| Name |
|——–|
| Apple |
| Cherry |
| banana |
| zebra |

FAQs

ฉันต้องใช้ List เล็กน้อยสำหรับ comparisonCriteria ถึงจะไปได้?+

ครับ ถ้าเป็นการเรียงแบบเดียวอันเดียวสามารถใช้ {"ColumnName"} หรือ {{"ColumnName", Order.Ascending}} ถ้าเรียงหลายคอลัมน์ต้องเป็น {{"Col1", Order.Asc}, {"Col2", Order.Desc}} – เป็น list ของ list นั่นเอง

ความแตกต่างระหว่าง Order.Ascending และ Order.Descending คืออะไร?+

Order.Ascending = จากน้อยไปมาก (A-Z หรือ 0-9) / Order.Descending = จากมากไปน้อย (Z-A หรือ 9-0) – ส่วนใหญ่ใช้ Descending เมื่อต้องการเห็นรายการสำคัญก่อน เช่น ยอดขายสูงสุด

Table.Sort จะรักษาลำดับแถวเดิมไว้ไหมถ้าค่าในคอลัมน์เรียงเหมือนกัน?+

ไม่แน่นอน Power Query ไม่รับประกันลำดับแถวเดิม (stable sort) ถ้าสำคัญเก่ามากต้องเพิ่มคอลัมน์ index ก่อน เรียงตามค่าของอันแรก แล้วเรียงตามค่า index เป็นระดับสุดท้าย

ถ้าคอลัมน์มีค่า null หรือเป็นค่าว่าง Table.Sort จะจัดการอย่างไร?+

ค่า null จะถูกเรียงไปไว้ที่ด้านหน้าเสมอ (ก่อนค่าปกติ) ถ้าต้องจัดการพิเศษต้องใช้ Table.SelectRows เพื่อแยกแถว null ออกก่อน แล้วต่อรวมกลับหลังจากเรียง

Resources & Related

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

ฟังก์ชันนี้Table.SortTable functions
Table functions (9)
Table.AddIndexColumn

Table.AddIndexColumn ใช้สำหรับเพิ่มคอลัมน์ที่มีลำดับเลขให้กับตาราง ช่วยให้สามารถกำหนดหมายเลขแถวตามลำดับได้

Table.FillDown

Table.FillDown เติมเต็มค่า null ด้วยค่าจากแถวด้านบน (forward fill) เหมาะสำหรับข้อมูลที่มีการ merge cell หรือจัดกลุ่มข้อมูลแบบ hierarchical ทำให้ได้ตารางที่สมบูรณ์พร้อมใช้ต่อได้เลย

Table.Group

Table.Group จัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนดและสรุปผลในแต่ละกลุ่มด้วย aggregation functions เช่น List.Sum, List.Count, List.Average คล้ายกับ GROUP BY ใน SQL แต่ทรงพลังกว่าเพราะสามารถจัดกลุ่มหลายคอลัมน์พร้อมกันและสร้างคอลัมน์สรุปผลหลายคอลัมน์ในคำสั่งเดียว รองรับ GroupKind.Local เพื่อเพิ่มประสิทธิภาพเมื่อข้อมูลเรียงลำดับแล้ว

Table.Last

Table.Last ใช้ดึงแถวสุดท้ายของตารางออกมาเป็น Record หรือคืนค่าเริ่มต้นถ้าตารางว่างเปล่า

Table.Pivot

Table.Pivot แปลงข้อมูล long format (แนวตั้ง) เป็น wide format (แนวนอน) โดยหมุนค่า attribute ให้เป็นคอลัมน์ใหม่

Table.ReorderColumns

จัดเรียงลำดับคอลัมน์ในตารางใหม่ตามลำดับที่ต้องการ พร้อมจัดการกรณีคอลัมน์หายไป

Table.ReverseRows

Table.ReverseRows คืนค่าตารางที่มีลำดับแถวตรงข้ามกับตารางต้นฉบับ (Reverse Order)

Table.SelectRows

Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่

Table.TransformColumns

Table.TransformColumns ใช้สำหรับแปลงข้อมูลในคอลัมน์โดยใช้ฟังก์ชันที่กำหนดไว้ แต่ละคอลัมน์สามารถมีการแปลงแตกต่างกันได้ รองรับการเปลี่ยนแปลงประเภทข้อมูลในเวลาเดียวกัน

enumerations (2)
GroupKind.Type

ระบุประเภทการจัดกลุ่มใน Table.Group ว่าจะใช้ Local (จัดกลุ่มแถวติดต่อกัน) หรือ Global (รวบรวมแถวทั้งหมดที่มี key เดียวกัน) ใช้เพื่อปรับประสิทธิภาพและควบคุมวิธีการจัดกลุ่มข้อมูล

JoinAlgorithm.Type

ระบุอัลกอริทึมที่ใช้ในการ Join ข้อมูลจากสองตาราง ช่วยให้คุณควบคุมประสิทธิภาพการทำงานได้ดีขึ้น

Comments

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