Thep Excel

SORTBYเรียงลำดับข้อมูลตามคอลัมน์อื่น

SORTBY เรียงลำดับข้อมูลตาม Array อื่นที่กำหนด รองรับหลายระดับการเรียง (multi-level) และสามารถกำหนดลำดับเอง (custom sort order) ด้วย XMATCH ต่างจาก SORT ที่เรียงตามคอลัมน์ภายในตัวเอง SORTBY ใช้คอลัมน์ภายนอกเป็นเกณฑ์ได้

fx
=SORTBY(array, by_array1, [sort_order1], [by_array2], [sort_order2])

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

อัปเดต 1 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
array Range/Array ช่วงข้อมูลที่ต้องการเรียงลำดับ (return ทั้ง array นี้)
by_array1 Range/Array คอลัมน์หรือ Array ที่ใช้เป็นเกณฑ์เรียงลำดับ (ต้องมีจำนวนแถวเท่ากับ array)
[sort_order1]ไม่บังคับ Number 1 ลำดับการเรียง: 1 = น้อยไปมาก (A-Z), -1 = มากไปน้อย (Z-A)
[by_array2]ไม่บังคับ Range/Array – คอลัมน์ที่ 2 สำหรับ multi-level sort (เรียงหลังจาก by_array1)
[sort_order2]ไม่บังคับ Number 1 ลำดับการเรียงสำหรับคอลัมน์ที่ 2

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

Additional Notes

SORTBY เป็น Dynamic Array Function ที่เรียงลำดับข้อมูลตามคอลัมน์หรือ Array อื่นที่กำหนด ต่างจาก SORT ที่เรียงตามคอลัมน์ภายในตัวเอง SORTBY ใช้คอลัมน์ภายนอกเป็นเกณฑ์ได้ รองรับหลายระดับการเรียง (multi-level sort) และสามารถกำหนดลำดับเอง (custom sort order) ด้วย XMATCH ผลลัพธ์เป็น Spill Range ที่อัปเดตอัตโนมัติ

How it works

Multi-Level Sort

เรียงข้อมูลหลายระดับ เช่น เรียงตามแผนก A-Z แล้วเรียงตามเงินเดือนจากมากไปน้อยภายในแผนกเดียวกัน

Custom Sort Order

เรียงตามลำดับที่กำหนดเอง เช่น Priority (Urgent, High, Normal, Low) โดยใช้ XMATCH

Dynamic Ranking

สร้างตารางอันดับที่อัปเดตอัตโนมัติเมื่อข้อมูลเปลี่ยน

Examples

ตารางสินค้าProductTableA1:D6
A B C D
1 รหัสสินค้า ชื่อสินค้า สถานะ ราคา
2 P001 เมาส์ไร้สาย ปิด 590
3 P002 คีย์บอร์ด เปิด 1,290
4 P003 จอ 27 นิ้ว ปิด 8,900
5 P004 หูฟัง เปิด 2,450
6 P005 เว็บแคม ปิด 1,750

ทุกสูตรด้านล่างอ้างถึงตารางนี้ พิมพ์ตามได้เลย ผลลัพธ์จะตรงกับที่เขียนไว้

ตัวอย่างที่ 1: เรียงจากมากไปน้อยSORTBY(A2:D6, D2:D6, -1)

SORTBY ต่างจาก SORT ตรงที่เกณฑ์การเรียงเป็นอีกช่วงหนึ่งต่างหาก ในที่นี้คือ D2:D6 (ราคา) ไม่ใช่เลขคอลัมน์ ส่วน array ที่ระบุ (A2:D6) ถูก return ออกมาทั้งก้อนตามลำดับที่เรียงได้

ราคาแพงสุด 8,900 ของ P003 ขึ้นมาก่อน ไล่ลงมาจนถึง P001 ที่ถูกสุด เหมือนกับผลลัพธ์ที่ SORT ทำได้ แต่เขียนคนละวิธี

ข้อดีคือ by_array ไม่จำเป็นต้องเป็นส่วนหนึ่งของ array หลักเลยก็ได้ ทำให้ยืดหยุ่นกว่า SORT ตรงจุดนี้

fx
=SORTBY(A2:D6, D2:D6, -1)

ผลลัพธ์P003 | จอ 27 นิ้ว | ปิด | 8900 | P004 | หูฟัง | เปิด | 2450 | P005 | เว็บแคม | ปิด | 1750 | P002 | คีย์บอร์ด | เปิด | 1290 | P001 | เมาส์ไร้สาย | ปิด | 590
ตัวอย่างที่ 2: Multi-Level Sort (2 ระดับ)SORTBY(A2:D6, C2:C6, 1, D2:D6, -1)

ระบุคู่เกณฑ์การเรียง 2 คู่ คู่แรก C2:C6 (สถานะ) เรียงน้อยไปมาก คู่ที่สอง D2:D6 (ราคา) เรียงมากไปน้อย ทำงานเหมือนเรียงตามสถานะก่อน แล้วเรียงตามราคาซ้อนภายในกลุ่มเดียวกันอีกที

ภายในกลุ่มสถานะเดียวกัน ราคาที่แพงกว่าจะขึ้นก่อนเสมอ เช่น กลุ่มปิดจะได้ P003 P005 P001 เรียงตามราคาไล่ลงมา

ต่างจาก SORT ตรงที่ SORTBY ระบุเกณฑ์เป็นช่วงข้อมูลจริงแยกกันคนละก้อน ไม่ต้องนับว่าเป็นคอลัมน์ที่เท่าไหร่ของ array หลัก

fx
=SORTBY(A2:D6, C2:C6, 1, D2:D6, -1)

ผลลัพธ์P003 | จอ 27 นิ้ว | ปิด | 8900 | P005 | เว็บแคม | ปิด | 1750 | P001 | เมาส์ไร้สาย | ปิด | 590 | P004 | หูฟัง | เปิด | 2450 | P002 | คีย์บอร์ด | เปิด | 1290
ตัวอย่างที่ 3: Custom Sort Order ด้วย XMATCHSORTBY(A2:D6, XMATCH(C2:C6, {"เปิด","ปิด"}))

XMATCH หาตำแหน่งของค่าสถานะแต่ละแถวในลิสต์ {"เปิด","ปิด"} ที่กำหนดเอง ได้ตำแหน่ง 1 สำหรับเปิด และ 2 สำหรับปิด แล้ว SORTBY ก็เอาตำแหน่งนี้ไปเรียง

ผลลัพธ์เลยได้กลุ่มเปิดขึ้นมาก่อน (P002 P004) ตามด้วยกลุ่มปิด (P001 P003 P005) ซึ่งเป็นลำดับที่ไม่ใช่ A-Z ตามตัวอักษรเลย แต่เป็นลำดับที่เรากำหนดเองทั้งหมด

เทคนิคนี้เอาไปใช้เรียงสถานะงาน เช่น Urgent มาก่อน Normal มาก่อน Low ได้เลย ไม่ต้องพึ่ง Sort A-Z ตามตัวอักษร

fx
=SORTBY(A2:D6, XMATCH(C2:C6, {"เปิด","ปิด"}))

ผลลัพธ์P002 | คีย์บอร์ด | เปิด | 1290 | P004 | หูฟัง | เปิด | 2450 | P001 | เมาส์ไร้สาย | ปิด | 590 | P003 | จอ 27 นิ้ว | ปิด | 8900 | P005 | เว็บแคม | ปิด | 1750
ตัวอย่างที่ 4: เรียงตามรหัสสินค้าล่าสุดSORTBY(A2:D6, A2:A6, -1)

ตัวอย่างนี้ใช้รหัสสินค้าเองเป็นเกณฑ์เรียง แต่กลับด้านเป็นมากไปน้อย (sort_order=-1) ทำให้ P005 ขึ้นมาอยู่บนสุดแทนที่จะเป็น P001

เหมาะกับสถานการณ์ที่อยากได้รายการล่าสุดหรือรหัสท้ายสุดขึ้นก่อน เช่น ออร์เดอร์ที่เพิ่งสร้างใหม่มักมีรหัสท้ายสุด

จะสังเกตว่า by_array ในที่นี้คือ A2:A6 ซึ่งเป็นคอลัมน์เดียวกับที่อยู่ใน array หลัก (A2:D6) ก็ทำได้เหมือนกัน ไม่จำเป็นต้องเป็นคอลัมน์นอกเสมอไป

fx
=SORTBY(A2:D6, A2:A6, -1)

ผลลัพธ์P005 | เว็บแคม | ปิด | 1750 | P004 | หูฟัง | เปิด | 2450 | P003 | จอ 27 นิ้ว | ปิด | 8900 | P002 | คีย์บอร์ด | เปิด | 1290 | P001 | เมาส์ไร้สาย | ปิด | 590
ตัวอย่างที่ 5: FILTER + SORTBYSORTBY(FILTER(A2:D6, C2:C6="ปิด"), FILTER(D2:D6, C2:C6="ปิด"), 1)

กรองสถานะปิดออกมาก่อนด้วย FILTER ทั้ง array หลักและ by_array ต้องกรองด้วยเงื่อนไขเดียวกันทั้งคู่ ไม่งั้นจำนวนแถวจะไม่ตรงกันแล้วสูตรจะ error

หลังกรองได้ 3 แถว SORTBY ก็เรียงตามราคาจากน้อยไปมาก ได้ P001 ถูกสุดขึ้นก่อน ตามด้วย P005 แล้วปิดท้ายด้วย P003

รูปแบบนี้พบบ่อยเวลาต้องกรองก่อนแล้วค่อยเรียงตามเกณฑ์ที่ไม่ได้อยู่ในผลลัพธ์ที่กรองมาโดยตรง

fx
=SORTBY(FILTER(A2:D6, C2:C6="ปิด"), FILTER(D2:D6, C2:C6="ปิด"), 1)

ผลลัพธ์P001 | เมาส์ไร้สาย | ปิด | 590 | P005 | เว็บแคม | ปิด | 1750 | P003 | จอ 27 นิ้ว | ปิด | 8900
ตัวอย่างที่ 6: เรียงตามเกณฑ์ที่คำนวณเองSORTBY(A2:D6, MOD(D2:D6,1000))

ตัวอย่างนี้ไม่ได้เรียงตามคอลัมน์ไหนในตารางตรงๆ เลย แต่คำนวณเกณฑ์ขึ้นมาเองด้วย MOD(D2:D6,1000) ซึ่งเอาราคาหารเอาเศษด้วย 1,000 ก่อนแล้วค่อยเรียง

P002 ราคา 1,290 เหลือเศษ 290 น้อยที่สุด เลยขึ้นก่อน ไล่ไปจนถึง P003 ราคา 8,900 เหลือเศษ 900 มากที่สุด อยู่ล่างสุด

นี่คือจุดที่ SORTBY เหนือกว่า SORT ชัดเจนที่สุด เพราะ by_array เป็นสูตรคำนวณสดๆ ก็ยังใช้เป็นเกณฑ์เรียงได้เลย ไม่ต้องมีคอลัมน์นั้นอยู่ในตารางจริงๆ ก่อน

fx
=SORTBY(A2:D6, MOD(D2:D6,1000))

ผลลัพธ์P002 | คีย์บอร์ด | เปิด | 1290 | P004 | หูฟัง | เปิด | 2450 | P001 | เมาส์ไร้สาย | ปิด | 590 | P005 | เว็บแคม | ปิด | 1750 | P003 | จอ 27 นิ้ว | ปิด | 8900

FAQs

SORTBY ต่างจาก SORT อย่างไร?+

SORT เรียงตามคอลัมน์ภายใน array (ระบุเป็นเลขคอลัมน์) ส่วน SORTBY เรียงตาม Array อื่นภายนอกได้ และรองรับ custom sort order ด้วย XMATCH

ทำ Custom Sort Order อย่างไร?+

ใช้ XMATCH กับ Array ที่กำหนดลำดับเอง เช่น =SORTBY(Data, XMATCH(Data[Status], {"High";"Medium";"Low"})) จะเรียง High ก่อน แล้ว Medium แล้ว Low

เรียงหลายระดับได้สูงสุดกี่ระดับ?+

รองรับได้สูงสุด 126 คู่ (by_array, sort_order) แต่ในทางปฏิบัติ 2-3 ระดับก็เพียงพอ

#VALUE! error เกิดจากอะไร?+

เกิดเมื่อ by_array มีจำนวนแถวไม่เท่ากับ array หลัก ต้องตรวจสอบให้ขนาดเท่ากัน

SORTBY รองรับ Excel เวอร์ชันไหน?+

Microsoft 365, Excel 2021, Excel 2024, และ Excel for Web เป็น Dynamic Array Function

Resources & Related

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

ฟังก์ชันนี้SORTBYLookup and reference
Lookup and reference (6)
DROP

DROP จะตัดข้อมูลออกตามจำนวนที่ระบุ ถ้าใส่เลขบวกจะตัดจากจุดเริ่มต้น (บน/ซ้าย) ทิ้งไป ถ้าใส่เลขลบจะตัดจากจุดสิ้นสุด (ล่าง/ขวา) ทิ้งไป ส่วนที่เหลือจะถูกนำมาแสดงผล

FILTER

FILTER กรองข้อมูลจาก Array ตามเงื่อนไขที่กำหนด แล้ว return เป็น Spill Range ที่ขยายอัตโนมัติ เป็น Dynamic Array Function ที่เปลี่ยนวิธีการทำงานกับข้อมูลใน Excel รองรับเงื่อนไขหลายตัว (AND/OR) และสามารถใช้ร่วมกับ SORT UNIQUE XLOOKUP เพื่อสร้างรายงานที่อัปเดตอัตโนมัติ

SORT

SORT เป็น Dynamic Array Function ที่เรียงลำดับข้อมูลจาก Array แล้ว return เป็น Spill Range ใหม่โดยไม่แก้ไขข้อมูลต้นฉบับ รองรับการเรียงตามคอลัมน์ที่ต้องการ (sort_index) ทั้งจากน้อยไปมาก (1) และมากไปน้อย (-1) รวมถึงเรียงแนวนอน (by_col=TRUE) ต่างจาก SORTBY ที่ใช้คอลัมน์ภายนอกเป็นเกณฑ์

TAKE

TAKE ช่วยตัดข้อมูลบางส่วนออกมาใช้งาน โดยระบุจำนวนที่ต้องการ ถ้าใส่เลขบวกจะดึงจากจุดเริ่มต้น (บน/ซ้าย) ถ้าใส่เลขลบจะดึงจากจุดสิ้นสุด (ล่าง/ขวา) คล้ายกับคำสั่ง LIMIT หรือ TOP/BOTTOM ใน Database

UNIQUE

UNIQUE เป็น Dynamic Array Function ที่คืนค่าที่ไม่ซ้ำจาก Array โดยสามารถตรวจซ้ำตามแถวหรือคอลัมน์ (by_col) และเลือกคืนเฉพาะค่าที่พบครั้งเดียว (exactly_once) ผลลัพธ์เป็น Spill Range ที่อัปเดตอัตโนมัติ ใช้ร่วมกับ SORT FILTER COUNTIF เพื่อสร้างรายงานไดนามิกและ dropdown ที่อัปเดตเอง

XMATCH

XMATCH คืนค่าตำแหน่งของข้อมูลที่ค้นหาในช่วงหรืออาร์เรย์ ถือเป็นฟังก์ชันรุ่นใหม่ที่ Microsoft พัฒนามาแก้จุดอ่อนของ MATCH โดยเฉพาะเรื่องค่า Default ที่เป็น Exact Match แทน Approximate Match ทำให้ใช้ง่ายและปลอดภัยกว่ามาก นอกจากนี้ยังรองรับการค้นหาย้อนกลับ Binary Search สำหรับข้อมูลขนาดใหญ่ และการค้นหาแบบ Wildcard ทำให้ยืดหยุ่นกว่า MATCH เดิมหลายเท่า

Comments

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