---
title: List.Sort – เรียงลำดับรายการ
url: https://www.thepexcel.com/functions/power-query/list-functions/list-sort/
type: function-explainer
program: Power Query
syntax: "List.Sort(list as list, optional comparisonCriteria as any) as list"
date: 2025-12-03
updated: 2025-12-23
scores:
  popularity: 7
  difficulty: 2
  usefulness: 7
---

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

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

## คำอธิบาย

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

## Syntax

```excel
List.Sort(list as list, optional comparisonCriteria as any) as list
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| list | Yes | List |  | รายการที่ต้องการเรียงลำดับ เป็น List ที่มีข้อมูลเป็นหมายเลข ข้อความ วันที่ หรือค่าอื่นๆ ที่สามารถเปรียบเทียบได้ |
| comparisonCriteria | No | Any | Order.Ascending | ตัวเลือกการเรียงลำดับ - สามารถเป็น Order.Ascending (ค่าเริ่มต้น) หรือ Order.Descending หรือฟังก์ชันเปรียบเทียบแบบกำหนดเอง ถ้าไม่ระบุ จะเรียงจากน้อยไปมากโดยอัตโนมัติ |

## ตัวอย่าง

### 1. เรียงจำนวนแบบพื้นฐาน (น้อยไปมาก)

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

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

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

### 2. เรียงแบบมากไปน้อย

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

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

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

### 3. เรียงข้อความตามตัวอักษร

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

**ผลลัพธ์:** `{"apple", "banana", "cherry", "zebra"}`

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

### 4. เรียงโดยใช้ฟังก์ชันเปรียบเทียบแบบกำหนดเอง

```excel
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}`

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

## หมายเหตุเพิ่มเติม

- ใช้ Order.Ascending หรือ Order.Descending สำหรับการเรียงแบบง่ายๆ ถ้าไม่ระบุก็จะใช้ Ascending โดยอัตโนมัติ

- เมื่อเรียงตามเกณฑ์ซับซ้อน (เช่น เรียงแบบกลับกัน) ให้ใช้ฟังก์ชันเปรียบเทียบแบบกำหนดเอง (x, y) => Value.Compare(...)

- List.Sort ไม่เปลี่ยนรายการเดิม แต่คืนรายการใหม่ที่เรียงแล้ว ถ้าต้องการเก็บรายการเดิม ให้เก็บผลลัพธ์ในตัวแปรใหม่

- ทำความสะอาดข้อมูลก่อนเรียง - ลบค่า null หรือค่าที่ไม่ต้องการออก เพื่อให้ผลลัพธ์สะอาดและถูกต้อง

- สำหรับการเรียงข้อความให้ระวัง - List.Sort เรียงตามค่า Unicode ดังนั้นตัวพิมพ์ใหญ่และเล็กอาจจัดเรียงต่างกัน

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn - List.Sort](https://learn.microsoft.com/en-us/powerquery-m/list-sort) _(official)_
- [PowerQuery.how - List.Sort](https://powerquery.how/list-sort/) _(article)_

---

_Source: [https://www.thepexcel.com/functions/power-query/list-functions/list-sort/](https://www.thepexcel.com/functions/power-query/list-functions/list-sort/)_
