Thep Excel

SORTฟังก์ชันเรียงลำดับแบบสไปล์

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

fx
=SORT(array, [sort_index], [sort_order], [by_col])

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

อัปเดต 14 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
array Range/Array ช่วงข้อมูลหรือ Array ที่ต้องการเรียงลำดับ
[sort_index]ไม่บังคับ Number/Array 1 เลขคอลัมน์ที่ใช้เรียง (1=คอลัมน์แรก) หรือ Array สำหรับ multi-level sort
[sort_order]ไม่บังคับ Number/Array 1 1 = น้อยไปมาก (A-Z), -1 = มากไปน้อย (Z-A) หรือ Array สำหรับ multi-level
[by_col]ไม่บังคับ Boolean FALSE FALSE = เรียงตามแถว (แนวตั้ง ค่าเริ่มต้น), TRUE = เรียงตามคอลัมน์ (แนวนอน)

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

Additional Notes

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

How it works

จัดอันดับยอดขาย

เรียงยอดขายจากมากไปน้อยเพื่อหาท็อปเซลล์

เตรียมข้อมูลก่อน UNIQUE

เรียงข้อมูลก่อนส่งให้ UNIQUE เพื่อให้ผลลัพธ์ดูเป็นระเบียบ

เรียงตารางที่กรองแล้ว

ใช้ SORT คร่อม FILTER เพื่อเรียงผลลัพธ์ที่กรองแล้ว

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: เรียง A-Z (ค่าเริ่มต้น)SORT(B2:B6)

สูตรนี้เรียงคอลัมน์ชื่อสินค้า (B2:B6) จากน้อยไปมากตามค่าเริ่มต้น เพราะไม่ได้ระบุ sort_index และ sort_order เลยสักตัว

ผลลัพธ์กระจายลงมาเป็นรายชื่อสินค้าเรียงตามลำดับตัวอักษรไทย โดยที่ตารางต้นฉบับใน A1:D6 ไม่ถูกแก้ไขเลยแม้แต่นิดเดียว

ข้อดีของ SORT เมื่อเทียบกับปุ่ม Sort ในเมนูคือ ถ้าข้อมูลต้นทางเปลี่ยน ผลลัพธ์ตรงนี้จะเรียงใหม่ให้อัตโนมัติ

fx
=SORT(B2:B6)

ผลลัพธ์คีย์บอร์ด | จอ 27 นิ้ว | เมาส์ไร้สาย | เว็บแคม | หูฟัง
ตัวอย่างที่ 2: เรียงตัวเลขจากมากไปน้อยSORT(D2:D6, 1, -1)

เรียงเฉพาะคอลัมน์ราคา (D2:D6) sort_index ใส่ 1 เพราะในช่วงที่เลือกมีคอลัมน์เดียว ส่วน sort_order ใส่ -1 เพื่อเรียงจากมากไปน้อย

ได้ราคาสูงสุด 8,900 ขึ้นมาอยู่บนสุด ไล่ลงมาจนถึง 590 ที่ต่ำสุดอยู่ล่างสุด

ถ้าเปลี่ยนเป็น 1 แทน -1 ก็จะได้เรียงจากน้อยไปมากแทนทันที

fx
=SORT(D2:D6, 1, -1)

ผลลัพธ์8900 | 2450 | 1750 | 1290 | 590
ตัวอย่างที่ 3: เรียงตารางตามคอลัมน์ราคาSORT(A2:D6, 4, -1)

คราวนี้เอาทั้งตาราง A2:D6 มาเรียง ไม่ใช่แค่คอลัมน์เดียวแบบตัวอย่างก่อนหน้า sort_index=4 บอกว่าให้ใช้คอลัมน์ที่ 4 ของช่วงที่เลือก (ราคา) เป็นเกณฑ์ แต่คืนมาทั้งแถว

P003 ราคาแพงสุด 8,900 เลยขึ้นมาอยู่บนสุดพร้อมข้อมูลครบทั้งแถว ไล่ลงมาจนถึง P001 ที่ถูกสุด

ต่างจากตัวอย่างที่ 2 ตรงที่ตัวอย่างนี้ทุกคอลัมน์ของแถวเดิมยังติดกันไปด้วย ไม่ใช่แค่ตัวเลขราคาเปล่าๆ

fx
=SORT(A2:D6, 4, -1)

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

ตัวอย่างนี้เรียง 2 ระดับพร้อมกัน sort_index ใส่เป็น array {3,4} หมายถึงเรียงตามคอลัมน์ 3 (สถานะ) ก่อน แล้วค่อยเรียงตามคอลัมน์ 4 (ราคา) ส่วน sort_order {1,-1} คือสถานะเรียงน้อยไปมาก ส่วนราคาเรียงมากไปน้อย

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

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

fx
=SORT(A2:D6, {3,4}, {1,-1})

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

กรองเอาเฉพาะสถานะปิดออกมาก่อนด้วย FILTER แล้วครอบด้วย SORT เรียงตามคอลัมน์ 4 (ราคา) จากน้อยไปมาก (sort_order=1)

ได้ P001 ราคาถูกสุด 590 ขึ้นก่อน ตามด้วย P005 แล้วปิดท้ายด้วย P003 ราคาแพงสุด 8,900

สลับกับตัวอย่างในหน้า FILTER ที่เรียงจากมากไปน้อย ตรงนี้แค่เปลี่ยน sort_order เป็น 1 ผลลัพธ์ก็กลับทิศทันที

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

ผลลัพธ์P001 | เมาส์ไร้สาย | ปิด | 590 | P005 | เว็บแคม | ปิด | 1750 | P003 | จอ 27 นิ้ว | ปิด | 8900
ตัวอย่างที่ 6: SORT + INDEX ดึง Top NINDEX(SORT(A2:D6, 4, -1), SEQUENCE(3), {2,4})

SORT เรียงทั้งตารางตามราคาจากมากไปน้อยก่อน ได้ P003 P004 P005 P002 P001 ตามลำดับ แล้ว INDEX ใช้ SEQUENCE(3) เลือกมาแค่ 3 แถวแรก และ {2,4} เลือกมาแค่คอลัมน์ชื่อสินค้ากับราคา

ผลลัพธ์เลยได้ตาราง Top 3 สินค้าราคาแพงสุด แต่เอามาแค่ 2 คอลัมน์ที่ต้องการ ไม่เอาทั้งรหัสสินค้าและสถานะมาด้วย

เทคนิคนี้สะดวกเวลาต้องการทำสรุป Top N แบบกำหนดเองว่าจะโชว์คอลัมน์ไหนบ้าง โดยไม่ต้องลากสูตรหรือซ่อนคอลัมน์เพิ่ม

fx
=INDEX(SORT(A2:D6, 4, -1), SEQUENCE(3), {2,4})

ผลลัพธ์จอ 27 นิ้ว | 8900 | หูฟัง | 2450 | เว็บแคม | 1750

FAQs

SORT ต่างจากการ Sort ในเมนูอย่างไร?+

SORT เป็นสูตรที่ return Spill Range ใหม่ ไม่แก้ไขข้อมูลต้นฉบับ และอัปเดตอัตโนมัติ ส่วนการ Sort ในเมนูจัดเรียงข้อมูลจริงในตาราง

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

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

ทำ Multi-Level Sort ได้ไหม?+

ได้ ใช้ Array สำหรับ sort_index และ sort_order เช่น =SORT(Data, {1,3}, {1,-1}) เรียงคอลัมน์ 1 ก่อน (A-Z) แล้วคอลัมน์ 3 (มากไปน้อย)

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

เกิดเมื่อเซลล์ด้านล่างไม่ว่าง ทำให้ผลลัพธ์ Spill ไม่ได้ ลบข้อมูลที่ขวางหรือย้ายสูตรไปที่ว่าง

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

Microsoft 365, Excel 2021, Excel 2024, และ Excel for Web เป็น Dynamic Array Function ไม่รองรับ Excel 2019 หรือเก่ากว่า

Resources & Related

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

ฟังก์ชันนี้SORTLookup and reference
Lookup and reference (10)
CHOOSEROWS

CHOOSEROWS ใช้ดึงแถวที่ต้องการจากตารางหรือ Array โดยระบุเลขลำดับแถว สามารถดึงได้หลายแถวพร้อมกัน จัดลำดับใหม่ หรือทำซ้ำแถวเดิมได้ รองรับการนับแถวจากล่างขึ้นบนโดยใช้เลขลบ (เช่น -1 คือแถวสุดท้าย)

DROP

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

FILTER

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

HSTACK

HSTACK เป็นฟังก์ชัน Dynamic Array ที่ใช้รวมข้อมูลจากหลายช่วงเข้าด้วยกันโดยนำมาเรียงต่อกันในแนวนอน (ต่อท้ายไปทางขวา) หากช่วงข้อมูลที่นำมารวมมีจำนวนแถวไม่เท่ากัน HSTACK จะเติมค่า #N/A ในส่วนที่ขาดหายไปให้โดยอัตโนมัติ

INDEX

INDEX คืนค่าหรือ reference ของเซลล์จากตำแหน่งที่ระบุใน range หรือ array โดยอ้างอิงจากหมายเลขแถวและคอลัมน์ที่เราระบุ มักถูกใช้ร่วมกับ MATCH เพื่อสร้าง INDEX-MATCH pattern ที่ยืดหยุ่นกว่า VLOOKUP เยอะ เพราะสามารถดึงข้อมูลจากทิศทางไหนก็ได้ และไม่พังเมื่อมีการแทรกหรือลบคอลัมน์

SORTBY

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

TAKE

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

TOCOL

TOCOL ช่วย "ตบ" ข้อมูลจากตารางหลายมิติให้มาเรียงต่อกันเป็นคอลัมน์เดียว สามารถเลือกวิธีเรียงลำดับได้ว่าจะอ่านจากซ้ายไปขวา (ทีละแถว) หรือบนลงล่าง (ทีละคอลัมน์) และยังมี Option ให้กรองช่องว่างหรือ Error ทิ้งไปโดยอัตโนมัติ เหมาะสำหรับการเตรียมข้อมูล (Data Preparation)

TRIMRANGE

ฟังก์ชันใหม่ใน Excel 365 ที่ตัดแถวและคอลัมน์ว่างออกจากขอบของช่วงข้อมูล ช่วยให้การอ้างอิงช่วงกว้าง ๆ หรือทั้งคอลัมน์ปลอดภัยและไม่ดึงข้อมูลว่างเข้ามาปนกับสูตร dynamic array

UNIQUE

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

Statistical (2)
FREQUENCY

FREQUENCY นับจำนวนค่าที่ตกอยู่ในแต่ละช่วงที่กำหนด และคืนค่าเป็น Array แนวตั้ง เหมาะสำหรับสร้าง Histogram และวิเคราะห์การกระจายข้อมูล

PIVOTBY

PIVOTBY เป็นฟังก์ชัน Excel 365 ที่สร้าง Pivot Table แบบไดนามิก โดยกำหนด Row Fields, Column Fields และ Values ผ่านสูตร พร้อมตั้งค่าการแสดงผลรวมและการเรียงลำดับได้ทันที

Comments

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