สารบัญ
บทช่วยสอนแสดงวิธีใช้ฟังก์ชัน SORT เพื่อจัดเรียงอาร์เรย์ข้อมูลแบบไดนามิก คุณจะได้เรียนรู้สูตรในการจัดเรียงตามตัวอักษรใน Excel จัดเรียงตัวเลขจากน้อยไปหามากหรือมากไปน้อย จัดเรียงตามหลายคอลัมน์ และอื่นๆ
ฟังก์ชันการจัดเรียงมีมานานแล้ว แต่ด้วยการเปิดตัวอาร์เรย์แบบไดนามิกใน Excel 365 ทำให้มีวิธีง่ายๆ อย่างน่าอัศจรรย์ในการจัดเรียงด้วยสูตร ข้อดีของวิธีนี้คือผลลัพธ์จะอัปเดตโดยอัตโนมัติเมื่อข้อมูลต้นฉบับเปลี่ยนแปลง
ฟังก์ชัน SORT ของ Excel
ฟังก์ชัน SORT ใน Excel จะจัดเรียงเนื้อหาของอาร์เรย์หรือ เรียงตามคอลัมน์หรือแถว โดยเรียงจากน้อยไปมากหรือจากมากไปหาน้อย
SORT อยู่ในกลุ่มของฟังก์ชันอาร์เรย์ไดนามิก ผลลัพธ์คืออาร์เรย์ไดนามิกที่กระจายไปยังเซลล์ข้างเคียงโดยอัตโนมัติในแนวตั้งหรือแนวนอน ขึ้นอยู่กับรูปร่างของอาร์เรย์ต้นทาง
ไวยากรณ์ของฟังก์ชัน SORT เป็นดังนี้:
SORT(อาร์เรย์, [sort_index ], [sort_order], [by_col])ที่ไหน:
อาร์เรย์ (จำเป็น) - คืออาร์เรย์ของค่าหรือช่วงของเซลล์ที่จะจัดเรียง ค่าเหล่านี้สามารถเป็นค่าใดๆ ก็ได้ รวมทั้งข้อความ ตัวเลข วันที่ เวลา ฯลฯ
Sort_index (ไม่บังคับ) - จำนวนเต็มที่ระบุคอลัมน์หรือแถวที่จะจัดเรียง หากละเว้น ระบบจะใช้ดัชนีเริ่มต้น 1
Sort_order (ไม่บังคับ) - กำหนดลำดับการจัดเรียง:
- 1 หรือละเว้น (ค่าเริ่มต้น) - เรียงลำดับจากน้อยไปหามาก เช่น จากสูตร (ไฟล์ .xlsx) จากน้อยไปมาก
- -1 - ลำดับจากมากไปน้อย เช่น จากมากไปน้อย
By_col (ไม่บังคับ) - ค่าตรรกะที่ระบุทิศทางของการเรียงลำดับ:
- FALSE หรือละเว้น (ค่าเริ่มต้น) - จัดเรียงตามแถว คุณจะใช้ตัวเลือกนี้เกือบตลอดเวลา
- TRUE - จัดเรียงตามคอลัมน์ ใช้ตัวเลือกนี้หากข้อมูลของคุณถูกจัดเรียงตามแนวนอนในคอลัมน์เช่นในตัวอย่างนี้
ฟังก์ชัน Excel SORT - เคล็ดลับและหมายเหตุ
SORT เป็นฟังก์ชันอาร์เรย์แบบไดนามิกใหม่ ด้วยเหตุนี้จึงมี ลักษณะเฉพาะบางประการที่คุณควรทราบ:
- ปัจจุบันฟังก์ชัน SORT พร้อมใช้งานใน Microsoft 365 และ Excel 2021 เท่านั้น Excel 2019, Excel 2016 ไม่สนับสนุนสูตรอาร์เรย์แบบไดนามิก ดังนั้นฟังก์ชัน SORT ไม่พร้อมใช้งานในเวอร์ชันเหล่านี้
- หากอาร์เรย์ที่ส่งคืนโดยสูตร SORT เป็นผลลัพธ์สุดท้าย (เช่น ไม่ส่งผ่านไปยังฟังก์ชันอื่น) Excel จะสร้างช่วงที่มีขนาดเหมาะสมแบบไดนามิกและเติมข้อมูลด้วยค่าที่เรียงลำดับ ดังนั้น ตรวจสอบให้แน่ใจว่าคุณมีเซลล์ว่างเพียงพอเสมอด้านล่างหรือ/และทางด้านขวาของเซลล์ที่คุณป้อนสูตร มิฉะนั้นข้อผิดพลาด #SPILL จะเกิดขึ้น
- ผลลัพธ์จะอัปเดตแบบไดนามิกเมื่อข้อมูลต้นฉบับเปลี่ยนแปลง อย่างไรก็ตาม อาร์เรย์ ที่ระบุในสูตรไม่ได้ขยายโดยอัตโนมัติเพื่อรวมรายการใหม่ที่เพิ่มภายนอก อาร์เรย์ ที่อ้างอิง หากต้องการรวมรายการดังกล่าว คุณต้องอัปเดตการอ้างอิง อาร์เรย์ ในสูตรของคุณ หรือแปลงช่วงต้นทางเป็นตารางตามที่แสดงในตัวอย่างนี้ หรือสร้างช่วงที่มีชื่อแบบไดนามิก
สูตร SORT พื้นฐานของ Excel
ตัวอย่างนี้แสดงสูตรพื้นฐานสำหรับการจัดเรียงข้อมูลใน Excel ตามลำดับจากน้อยไปหามาก
สมมติว่าข้อมูลของคุณจัดเรียงตามตัวอักษรดังที่แสดงในภาพหน้าจอด้านล่าง คุณกำลังต้องการจัดเรียงตัวเลขในคอลัมน์ B โดยไม่แบ่งหรือผสมข้อมูล
สูตรในการเรียงลำดับจากน้อยไปหามาก
ในการจัดเรียงค่าในคอลัมน์ B จากน้อยไปมาก นี่คือสูตรที่จะใช้:
=SORT(A2:B8, 2, 1)
โดยที่:
- A2:B8 คืออาร์เรย์ต้นทาง
- 2 คือหมายเลขคอลัมน์ที่จะจัดเรียงตาม
- 1 คือลำดับการเรียงจากน้อยไปมาก
เนื่องจากข้อมูลของเราถูกจัดเรียงเป็นแถว ดังนั้นอาร์กิวเมนต์สุดท้ายจึงถูกละเว้นโดยค่าเริ่มต้นเป็น FALSE - จัดเรียงตามแถว
เพียงป้อนสูตรใน เซลล์ว่างใดๆ (ในกรณีของเราคือ D2) ให้กด Enter และผลลัพธ์จะกระจายไปที่ D2:E8 โดยอัตโนมัติ
สูตรเพื่อเรียงลำดับจากมากไปน้อย
หากต้องการเรียงลำดับข้อมูลจากมากไปหาน้อย เช่น จากมากไปน้อย ให้ตั้งค่าอาร์กิวเมนต์ sort_order เป็น -1 ดังนี้:
=SORT(A2:B8, 2, -1)
ป้อนสูตรที่เซลล์บนซ้ายของ ช่วงปลายทาง และคุณจะได้ผลลัพธ์นี้:
ในลักษณะเดียวกัน คุณสามารถจัดเรียงค่าข้อความตามลำดับตัวอักษรจาก A ถึง Z หรือจาก Z ถึง A
วิธีจัดเรียงข้อมูลใน Excel โดยใช้ f ormula
ตัวอย่างด้านล่างแสดงการใช้งานทั่วไปของฟังก์ชัน SORT ใน Excelและข้อมูลที่ไม่สำคัญอีกสองสามรายการ
จัดเรียง Excel ตามคอลัมน์
เมื่อคุณจัดเรียงข้อมูลใน Excel ส่วนใหญ่คุณจะเปลี่ยนลำดับของแถว แต่เมื่อข้อมูลของคุณถูกจัดเรียงตามแนวนอนด้วยแถวที่มีป้ายกำกับและคอลัมน์ที่มีระเบียน คุณอาจต้องเรียงลำดับจากซ้ายไปขวา แทนที่จะเรียงจากบนลงล่าง
หากต้องการจัดเรียงตามคอลัมน์ใน Excel ให้ตั้งค่า by_col อาร์กิวเมนต์เป็น TRUE ในกรณีนี้ sort_index จะแสดงแถว ไม่ใช่คอลัมน์
ตัวอย่างเช่น หากต้องการจัดเรียงข้อมูลด้านล่างตามจำนวน จากสูงสุดไปต่ำสุด ใช้สูตรนี้:
=SORT(B1:H2, 2, 1, TRUE)
โดยที่:
- B1:H2 คือแหล่งข้อมูลในการจัดเรียง
- 2 คือ ดัชนีการเรียงลำดับ เนื่องจากเรากำลังเรียงลำดับตัวเลขในแถวที่สอง
- -1 ระบุลำดับการเรียงจากมากไปหาน้อย
- TRUE หมายถึงการเรียงลำดับคอลัมน์ ไม่ใช่แถว
จัดเรียงตามหลายคอลัมน์ในลำดับที่แตกต่างกัน (การจัดเรียงหลายระดับ)
เมื่อทำงานกับโมเดลข้อมูลที่ซับซ้อน คุณอาจต้องการการจัดเรียงหลายระดับ สามารถทำได้ด้วยสูตรหรือไม่? ใช่ได้อย่างง่ายดาย! สิ่งที่คุณทำคือจัดหาค่าคงที่อาร์เรย์สำหรับอาร์กิวเมนต์ sort_index และ sort_order
ตัวอย่างเช่น เพื่อจัดเรียงข้อมูลด้านล่างก่อนตาม ภูมิภาค (คอลัมน์ A) จาก A ถึง Z แล้วตามด้วย จำนวน (คอลัมน์ C) จากน้อยไปหามาก ตั้งค่าอาร์กิวเมนต์ต่อไปนี้:
- อาร์เรย์ คือข้อมูลใน A2:C13
- Sort_index คือค่าคงที่ของอาร์เรย์ {1,3} เนื่องจากเราจัดเรียงตาม ภูมิภาค (ที่ 1คอลัมน์) แล้วตามด้วย จำนวน (คอลัมน์ที่ 3).
- Sort_order คือค่าคงที่ของอาร์เรย์ {1,-1} เนื่องจากคอลัมน์ที่ 1 จะต้องเรียงลำดับจากน้อยไปหามาก และคอลัมน์ที่ 3 จะเรียงลำดับจากมากไปน้อย<9 ละเว้น
- By_col เนื่องจากเราจัดเรียงแถว ซึ่งเป็นค่าเริ่มต้น
เมื่อนำอาร์กิวเมนต์มารวมกัน เราจะได้สูตรนี้:
=SORT(A2:C13, {1,3}, {1,-1})
และใช้งานได้อย่างสมบูรณ์แบบ! ค่าข้อความในคอลัมน์แรกจะเรียงตามตัวอักษรและตัวเลขในคอลัมน์ที่สามจากมากไปน้อย:
จัดเรียงและกรองใน Excel
ในกรณี เมื่อคุณกำลังมองหาการกรองข้อมูลด้วยเกณฑ์บางอย่างและจัดลำดับเอาต์พุต ให้ใช้ฟังก์ชัน SORT และ FILTER ร่วมกัน:
SORT(FILTER(array, criteria_range= criteria) , [sort_index], [sort_order], [by_col])ฟังก์ชัน FILTER รับอาร์เรย์ของค่าตามเกณฑ์ที่คุณกำหนดและส่งอาร์เรย์นั้นไปยังอาร์กิวเมนต์แรกของ SORT
สิ่งที่ดีที่สุด เกี่ยวกับสูตรนี้คือมันยังแสดงผลลัพธ์เป็นช่วงการรั่วไหลแบบไดนามิกโดยที่คุณไม่ต้องกด Ctrl + Shift + Enter หรือคาดเดาจำนวนเซลล์ที่จะคัดลอก ตามปกติ คุณจะพิมพ์สูตรในเซลล์บนสุดแล้วกดปุ่ม Enter
ตามตัวอย่าง เราจะแยกรายการที่มีปริมาณเท่ากับหรือมากกว่า 30 (>=30) จาก แหล่งข้อมูลใน A2:B9 และจัดเรียงผลลัพธ์จากน้อยไปหามาก
สำหรับสิ่งนี้ ขั้นแรกเราได้ตั้งค่าเงื่อนไข เช่น ในเซลล์ E2 ตามที่แสดงในภาพด้านล่าง จากนั้น สร้างสูตร SORT ของ Excel ด้วยวิธีนี้:
=SORT(FILTER(A2:B9, B2:B9>=E2), 2)
นอกเหนือจาก อาร์เรย์ ที่สร้างโดยฟังก์ชัน FILTER เราระบุเฉพาะ sort_index อาร์กิวเมนต์ (คอลัมน์ 2) อาร์กิวเมนต์ที่เหลืออีกสองรายการถูกละไว้เนื่องจากค่าเริ่มต้นทำงานตรงตามที่เราต้องการ (เรียงลำดับจากน้อยไปหามาก ตามแถว)
รับค่าที่มากที่สุดหรือน้อยที่สุด N และเรียงลำดับผลลัพธ์
เมื่อวิเคราะห์ข้อมูลจำนวนมากจำนวนมาก มักจะจำเป็นต้องดึงค่าสูงสุดจำนวนหนึ่งออกมา อาจไม่ใช่แค่แยกข้อมูล แต่ยังจัดเรียงตามลำดับที่ต้องการด้วย และตามหลักการแล้ว ให้เลือกคอลัมน์ที่จะรวมไว้ในผลลัพธ์ ฟังดูยุ่งยาก? ไม่ใช่กับฟังก์ชันอาร์เรย์แบบไดนามิกใหม่!
นี่คือสูตรทั่วไป:
INDEX(SORT(…), SEQUENCE( n), { column1_to_return, column2_to_return, …})โดยที่ n คือจำนวนของค่าที่คุณต้องการส่งคืน
จากชุดข้อมูลด้านล่าง สมมติว่าคุณต้องการรับ รายการ 3 อันดับแรกโดยอิงจากตัวเลขในคอลัมน์ C
ในการทำให้เสร็จ คุณต้องจัดเรียงอาร์เรย์ A2:C13 ตามคอลัมน์ที่ 3 โดยเรียงลำดับจากมากไปหาน้อยก่อน:
SORT(A2:C13, 3, -1)
จากนั้น ซ้อนสูตรข้างต้นในอาร์กิวเมนต์แรก ( อาร์เรย์ ) ของฟังก์ชัน INDEX เพื่อให้อาร์เรย์เรียงลำดับจากมากไปน้อย
สำหรับวินาที ( row_num ) อาร์กิวเมนต์ซึ่งระบุจำนวนแถวที่จะส่งคืน สร้างหมายเลขลำดับที่ต้องการโดยใช้ฟังก์ชัน SEQUENCE เนื่องจากเราต้องการค่าสูงสุด 3 ค่า เราใช้ SEQUENCE(3) ซึ่งเหมือนกับการให้ค่าคงที่อาร์เรย์แนวตั้ง {1;2;3} โดยตรงในสูตร
สำหรับค่าที่สาม ( col_num ) อาร์กิวเมนต์ ซึ่งกำหนดจำนวนคอลัมน์ที่จะส่งคืน ระบุหมายเลขคอลัมน์ในรูปแบบของค่าคงที่อาร์เรย์แนวนอน เราต้องการคืนค่าคอลัมน์ B และ C เราจึงใช้อาร์เรย์ {2,3}.
ในที่สุด เราได้สูตรต่อไปนี้:
=INDEX(SORT(A2:C13, 3, -1), SEQUENCE(3), {2,3})
และมันสร้าง ผลลัพธ์ที่เราต้องการ:
หากต้องการคืนค่า 3 ด้านล่าง ให้จัดเรียงข้อมูลต้นฉบับจากน้อยไปมาก สำหรับสิ่งนี้ ให้เปลี่ยนอาร์กิวเมนต์ sort_order จาก -1 เป็น 1:
=INDEX(SORT(A2:C13, 3, 1), SEQUENCE(3), {2,3})
ส่งคืนค่าที่เรียงลำดับในตำแหน่งที่ระบุ
มองจากอีกมุมหนึ่ง จะทำอย่างไรถ้าคุณต้องการส่งคืนตำแหน่งการจัดเรียงเฉพาะ พูดว่า เฉพาะที่ 1 เฉพาะที่ 2 หรือเฉพาะระเบียนที่ 3 จากรายการที่เรียงลำดับ หากต้องการดำเนินการ ให้ใช้สูตร INDEX SORT แบบง่ายที่กล่าวถึงข้างต้น:
INDEX(SORT(…), n, { column1_to_return, column2_to_return, …})โดยที่ n คือตำแหน่งที่สนใจ
ตัวอย่างเช่น หากต้องการรับตำแหน่งใดตำแหน่งหนึ่งจากบนสุด (เช่น จากข้อมูลที่เรียงจากมากไปน้อย) ให้ใช้สูตรนี้ :
=INDEX(SORT(A2:C13, 3, -1), F1, {2,3})
หากต้องการรับตำแหน่งเฉพาะจากด้านล่าง (เช่น จากข้อมูลที่เรียงลำดับจากน้อยไปมาก) ให้ใช้ตำแหน่งนี้:
=INDEX(SORT(A2:C13, 3, 1), I1, {2,3})
ที่ A2: C13 คือแหล่งข้อมูล F1 คือตำแหน่งจากด้านบน I1 คือตำแหน่งจากด้านล่าง และ {2,3} คือคอลัมน์ที่จะส่งคืน
ใช้ตาราง Excel เพื่อรับอาร์เรย์การจัดเรียงเพื่อขยายโดยอัตโนมัติ
อย่างที่คุณทราบแล้ว อาร์เรย์ที่เรียงลำดับจะอัปเดตโดยอัตโนมัติเมื่อคุณทำการเปลี่ยนแปลงใดๆ กับข้อมูลต้นฉบับ นี่เป็นลักษณะการทำงานมาตรฐานของฟังก์ชันอาร์เรย์ไดนามิกทั้งหมด รวมถึง SORT อย่างไรก็ตาม เมื่อคุณเพิ่มรายการใหม่นอกอาร์เรย์ที่อ้างอิง รายการเหล่านั้นจะไม่รวมอยู่ในสูตรโดยอัตโนมัติ หากคุณต้องการให้สูตรของคุณตอบสนองต่อการเปลี่ยนแปลงดังกล่าว ให้แปลงช่วงแหล่งที่มาเป็นตาราง Excel ที่ทำงานได้อย่างสมบูรณ์ และใช้การอ้างอิงที่มีโครงสร้างในสูตรของคุณ
หากต้องการดูวิธีการทำงานจริง โปรดพิจารณาสิ่งต่อไปนี้ ตัวอย่าง
สมมติว่าคุณใช้สูตร SORT ของ Excel ด้านล่างเพื่อจัดเรียงค่าในช่วง A2:B8 ตามลำดับตัวอักษร:
=SORT(A2:B8, 1, 1)
จากนั้น ให้คุณป้อนรายการใหม่ใน แถว 9… และรู้สึกผิดหวังที่เห็นว่ารายการที่เพิ่มใหม่ไม่อยู่ในขอบเขตของช่วงการรั่วไหล:
ตอนนี้ แปลงช่วงแหล่งที่มาเป็นตาราง สำหรับสิ่งนี้ เพียงเลือกช่วงของคุณรวมถึงส่วนหัวของคอลัมน์ (A1:B8) แล้วกด Ctrl + T เมื่อสร้างสูตรของคุณ ให้เลือกช่วงที่มาโดยใช้เมาส์ และชื่อตารางจะถูกแทรกในสูตรโดยอัตโนมัติ (ซึ่งเรียกว่าการอ้างอิงที่มีโครงสร้าง):
=SORT(Table1, 1, 1)
เมื่อคุณพิมพ์ รายการใหม่ที่อยู่ใต้แถวสุดท้าย ตารางจะขยายโดยอัตโนมัติ และข้อมูลใหม่จะรวมอยู่ในช่วงการรั่วไหลของสูตร SORT:
ฟังก์ชัน SORT ของ Excel ไม่ทำงาน
หากสูตร SORT ของคุณทำให้เกิดข้อผิดพลาด เป็นไปได้มากว่าเกิดจากสาเหตุต่อไปนี้
ข้อผิดพลาด #NAME: Excel เวอร์ชันเก่า
SORT เป็นฟังก์ชันใหม่และใช้งานได้เฉพาะใน Excel 365 และ Excel 2021 ในเวอร์ชันเก่าที่ไม่รองรับฟังก์ชันนี้ #NAME? เกิดข้อผิดพลาดขึ้น
ข้อผิดพลาด #SPILL: มีบางอย่างบล็อกช่วงการรั่วไหล
หากเซลล์อย่างน้อยหนึ่งเซลล์ในช่วงการรั่วไหลไม่ว่างเปล่าหรือถูกผสานทั้งหมด แสดงว่า #SPILL! ข้อผิดพลาดจะปรากฏขึ้น หากต้องการแก้ไข เพียงเอาสิ่งอุดตันออก สำหรับข้อมูลเพิ่มเติม โปรดดูที่ Excel #SPILL! ข้อผิดพลาด - ความหมายและวิธีแก้ไข
ข้อผิดพลาด #VALUE: อาร์กิวเมนต์ที่ไม่ถูกต้อง
เมื่อใดก็ตามที่คุณพบข้อผิดพลาด #VALUE! ข้อผิดพลาด ตรวจสอบอาร์กิวเมนต์ sort_index และ sort_order sort_index ไม่ควรเกินจำนวนคอลัมน์ที่เป็น อาร์เรย์ และ sort_order ควรเป็น 1 (จากน้อยไปมาก) หรือ -1 (จากมากไปหาน้อย)
ข้อผิดพลาด #REF: สมุดงานต้นทางถูกปิด
เนื่องจากอาร์เรย์แบบไดนามิกมีการรองรับการอ้างอิงระหว่างสมุดงานอย่างจำกัด ฟังก์ชัน SORT ต้องเปิดทั้งสองไฟล์ ถ้าสมุดงานต้นทางถูกปิด สูตรจะส่ง #REF! ข้อผิดพลาด. หากต้องการแก้ไข เพียงเปิดไฟล์อ้างอิง
นั่นคือวิธีการจัดเรียงข้อมูลใน Excel โดยใช้สูตร ฉันขอขอบคุณที่อ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
แบบฝึกหัดสำหรับการดาวน์โหลด
การเรียงลำดับใน Excel ด้วย