การเรียงลับดับข้อมูลใน Excel ไม่ใช้เรื่องใหม่ 😊 แต่ที่อาจจะดูใหม่คงจะเป็นการมีฟังก์ชันเรียงลำดับข้อมูลให้เราเรียกใช้และให้ข้อมูลกลับมาแบบ dynamic (เปลี่ยนไปตามข้อมูลต้นฉบับ) นี่พึ่งจะมีให้ใช้ใน Excel 2021
นั่นคือ ตั้งแต่ก่อนพวกเราต้องทำแบบ manual คือไปที่ Data > Sort หรือผ่าน VBA มาตลอด 😂
ภาพรวม
ฟังก์ชัน SORT ใช้ดึงเอาข้อมูลออกมาจาก range หรือ array ที่เรามีอยู่มาเรียงลำดับใหม่ในแบบที่เราต้องการ
รูปแบบการใช้งาน (syntax)
=SORT(array,[sort_index],[sort_order],[by_col])
จำเป็น? | อาร์กิวเมนต์ | คำอธิบาย |
---|---|---|
ต้องใส่ | array | ข้อมูลที่เราต้องการและจะนำมาเรียงลำดับ อาจจะเป็น range หรือ array ที่ได้มาจากพวกฟังก์ชัน dynamic array ทั้งหลาย |
ไม่ใส่ก็ได้ | [sort_index] | ตัวเลขใช้ระบุแถวหรือคอลัมภ์ที่เราจะให้เรียงลำดับ |
ไม่ใส่ก็ได้ | [sort_order] | ตัวเลขใช้ระบุวิธีการจัดลำดับ โดย ใช้ 1 หากต้องการเรียงจากน้อยไปมาก และให้ใช้ -1 เมื่อต้องการให้เรียงจากมากไปน้อย |
ไม่ใส่ก็ได้ | [by_col] | ใช้ระบุว่าให้ดูข้อมูลไปตามแนวคอลัมภ์หรือไม่? FALSE – ให้เรียงลำดับตามแถว หรือไม่ระบุก็จะได้วิธีการเรียงลำดับแบบนี้TRUE – ให้เรียงลำดับตามคอลัมภ์ กรณีนี้คือ ข้อมูลที่เราจะเรียงลำดับ กระจายไปตา่มแนวของคอลัมภ์ |
ตัวอย่างการใช้งาน
ในตัวอย่างของภาพด้านล่างนี้ เรามีข้อมูลบุคคลและคะแนนสอบ และเราอยากได้ข้อมูลอีกชุดหนึ่งที่เรียงลำดับตามคะแนน post test จากมากไปหาน้อย
หากต้องการไฟล์ตัวอย่างสามารถ เปิดดูและดาวน์โหลด ได้เลย
สูตรที่ใช้ใน F2 จะเป็นแบบนี้ โดยข้อมูลอยู่ในตารางชื่อ tblPeopleTestScore
=SORT(tblPeopleTestScore[#Data],4,-1,FALSE)
โดยที่
- array ข้อมูลต้นฉบับที่เราใส่เข้าไปคือ
tblPeopleTestScore[#Data]
- โดยเราจะจัดเรียงข้อมูลชุดใหม่จากคอลัมภ์ที่ 4 หรือ post_test นับเริ่มจาก 1
- ให้เรียงลำดับจากมากไปน้อย จึงใส่ -1
- และช่องสุดท้ายใส่ FALSE เพราะข้อมูลเราไหลลงไปตามแถว หรือที่จริงแล้วจะไม่ใส่ก็ได้
มาดูอีกตัวอย่าง เป็นข้อมูลเดียวกันเลย เพียงแค่ข้อมูลถูกวางมาแบบไหลจากซ้ายไปขวา หรือไปตามแนวคอลัมภ์ ดังนั้นเวลาจะเรียงตามคะแนน post test สูตรก็จะเป็น
=SORT($A$1:$J$4,4,-1,TRUE)
ดุังภาพนี้
💡สังเกตว่ากรณีนี้ สูตรที่ผมใช้จะไม่ได้เป็นแบบ table นะครับ เพราะถ้าข้อมูลมาแบบนี้ จะไม่เป็นไปตามวิธีการวางข้อมูลแบบ table ดังนั้นเราจะใช้การอ้างอิง range ตามปกติ
สิ่งที่ควรทราบ
- ถ้าเราไม่ระบุอาร์กิวเมนต์ที่ไม่บังคับ ไม่ว่าจะเป็น
- sort_index ให้ Excel จะใช้แถวที่ 1 หรือไม่ก็คอลัมภ์ที่ 1 หากอาร์กิวเมนต์สุดท้ายเป็น TRUE
- sort_order ปกติ Excel จะเรียงจากน้อยไปหามากให้
- by_col ปกติจะเรียงไปตามแถว ยกเว้นเราจะระบุเป็น TRUE
- คำว่าเรียงลำดับจากน้อยไปมาก หรือจากมากไปน้อย นั้นจะหมายถึงตามลำดับใน ASCII code และ มอก. 620 นะ 💡แต่ถ้าเป็นเลขไทยลำดับจะมาก่อน
ก
ถึงแม้ว่าลำดับใน มอก. 620 จะมากกว่าอักขระ และจะให้ค่ากลับมาเป็นเลขอารบิก 😂 ก็คือ Excel น่าจะมีฟังก์ชันแปลงให้อีกทีแหละ - ฟังก์ชัน SORT จะเรียงข้อมูลได้เฉพาะตามที่มีอยู่ใน array หรือ range ที่ระบุให้เท่านั้น หากคุณต้องการจัดเรียงข้อมูลตามค่าที่อยู่นอก array ที่ระบุให้ แนะนำให้ไปใช้ฟังก์ชัน SORTBY แทน เพราะเป็นฟังก์ชันที่มีความยืดหยุ่นกว่า
- ฟังก์ชัน SORT เป็นหนึ่งในฟังก์ชันแบบ dynamic array ดังนั้นคุณอาจเจอ
#SPILL!
ได้ อ่านข้อแนะนำการใช้งานได้จาก วิธีแก้ SPILL error ใน Excel - คุณสามารถใส่ array หรือ range ที่แบบที่มี
- 1 คอลัมภ์หลายแถว
- 1 แถว หลายคอลัมภ์
- หรือหลายแถวและหลายคอลัมภ์
หวังว่าโพสต์นี้จะเป็นประโยชน์นะครับ โดยเฉพาะผู้ที่ต้องส่ง report แล้วต้องมาคอยเรียงลำดับข้อมูลใหม่ก่อนส่ง ยิ่งส่งไปหลายแหล่งวิธีใช้ข้อมูลแต่ละกลุ่มก็ต่างกัน ทำให้เราต้องเสียเวลามาเรียงข้อมูลก่อนส่งตลอด
ฟังก์ชัน SORT ก็จะช่วยเราได้เยอะเลย เพราะข้อมูลแหล่งเดียวแต่เราได้รูปแบบที่ต้องการเลย ไม่ต้องไปไล่คลิกและ copy-paste หลายขั้นตอน
Leave a Reply