การใช้ฟังก์ชัน SORT ใน Excel

การเรียงลับดับข้อมูลใน 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 หลายขั้นตอน


Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.