ภาพรวม
ฟังก์ชัน SORTBY ใช้ดึงพร้อมกับเรียงลำดับข้อมูลจาก array หรือ range อื่น โดยที่ข้อมูลที่ได้มา จะเปลี่ยนไปตามข้อมูลต้นฉบับและเรียงลำดับให้ใหม่ด้วย
หากใครได้อ่านโพสต์ก่อนที่หน้านี้ ที่เราพูดถึงฟังก์ชัน SORT ไปแล้ว การใช้งานจะคล้ายกัน แต่ SORT จะเรียงลำดับตามข้อมูลใน array หรือ range โดยยึดที่คอลัมภ์ใดคอลัมภ์หนึ่งเท่านั้น หรือแถวใดแถวหนึ่งเท่านั้น ในกรณีที่เรากำหนดให้จัดลำดับข้อมูลที่วางแบบแนวคอลัมภ์
แต่ใน SORTBY จะเรียงลำดับข้อมูลให้จาก 1 คอลัมภ์หรือมากกว่านั้นก็ได้ และคอลัมภ์ที่เป็นเงื่อนไขในการจัดเรียงก็ไม่จำเป็นต้องอยู่ในข้อมูลด้วย
ตัวอย่างการใช้งาน
ตัวอย่างข้อมูลด้านล่าง สมมติเราต้องการจัดเรียงข้อมูลพนักงานตามแผนกจากน้อยไปหามาก (A-Z)
โดยข้อมูลนี้สามารถ ดูและดาวน์โหลด ได้เลย (File > Save As > Download a Copy)
สูตรที่ใช้ก็จะเป็นดังนี้ (กรณีที่ข้อมูลทำเป็น table ไว้แล้ว)
=SORTBY(tblEmployees[#Data],tblEmployees[dept])
หรือสำหรับข้อมูลที่เป็น range สูตรจะเป็น
=SORTBY($A$2:$F$21,$F$2:$F$21)
💡โดยจะสังเกตว่า การใช้งานแบบนี้ก็แทบจะเหมือนกับฟังก์ชัน SORT เลย
แต่ที่จริงแล้ว SORTBY มันยืดหยุ่นกว่านั้น มาดูกันครับ
จัดเรียงข้อมูล โดยเงื่อนไขที่ไม่ได้อยู่ในข้อมูล
ตัวอย่างจากข้อมูลชุดเดิม เราอยากได้ชื่อพนักงานเรียงตามอายุ แต่อายุอาจดูก้ำกึ่งเป็น sensitive data เราเลยไม่อยากให้มันแสดงในรายการ สูตรก็จะเป็น
=SORTBY(tblEmployees[[emp_id]:[preferred_name]],tblEmployees[dept])
และก็จะได้ผลลัพธ์ดังนี้
จัดเรียงข้อมูลจากหลายเงื่อนไข (หลายคอลัมภ์)
กรณีนี้จะคล้ายกับการเรียงลำดับข้อมูลหลายระดับที่เราคลิกเลือกเอาใน Excel เลย เพียงแค่เราเขียนในสูตรใส่ในเซลล
เช่น หากเราอยากเรียงลำดับข้อมูลพนักงานตาม
1) แผนก (จากน้อยไปหามาก)
2) รหัสพนักงาน (จากมากไปหาน้อย)
สูตรก็จะเป็นดังนี้ สำหรับแบบ table
=SORTBY(tblEmployees[#Data],tblEmployees[dept],1,tblEmployees[emp_id],-1)
ส่วนสำหรับ range ปกติจะเป็น
=SORTBY($A$2:$F$21,$F$2:$F$21,1,$A$2:$A$21,-1)
หวังว่าคงพอเห็นภาพการใช้งานฟังก์ชัน SORTBY และความแตกต่างกับ SORT ได้ดีขึ้นนะครับ
รูปแบบการใช้งาน
=SORTBY(array,by_array1,[sort_order1],[by_array2],[sort_order2],...)
จำเป็น? | อาร์กิวเมนต์ | คำอธิบาย |
---|---|---|
จำเป็น | array | ข้อมูลที่เราต้องการและจะนำมาเรียงลำดับ อาจจะเป็น range หรือ array ที่ได้มาจากพวกฟังก์ชัน dynamic array ทั้งหลาย |
จำเป็น | by_array1 | range หรือ array ที่เป็นเงื่อนไขหรือรูปแบบการเรียงลำดับ |
ไม่ใส่ก็ได้ | [sort_order1] | ตัวเลขใช้ระบุวิธีการจัดลำดับ โดย ใช้ 1 หากต้องการเรียงจากน้อยไปมากและให้ใช้ -1 เมื่อต้องการให้เรียงจากมากไปน้อย |
ไม่ใส่ก็ได้ | [by_array2] | range หรือ array ลำดับที่ 2 ที่เป็นเงื่อนไขหรือรูปแบบการเรียงลำดับ |
ไม่ใส่ก็ได้ | [sort_order2] | ตัวเลขใช้ระบุวิธีการจัดลำดับของ [by_array2] โดย ใช้ 1 หากต้องการเรียงจากน้อยไปมากและให้ใช้ -1 เมื่อต้องการให้เรียงจากมากไปน้อย |
และ ...
นั้นหมายถึง คุณสามารถใส่คูุ array หรือ range กับตัวเลขระบุวิธีการจัดอันดับไปได้เรื่อย ๆ
สิ่งที่ควรทราบ
- หากขนาดของ array หรือ range ของ
array
กับby_array1
ไม่เท่ากัน จะแสดง error เป็น #VALUE! - อาร์กิวเมนต์
by_array1
จะต้องเป็น 1 คอลัมภ์ หรือ 1 แถวเท่านั้น - คำว่าเรียงลำดับจากน้อยไปมาก หรือจากมากไปน้อย นั้นจะหมายถึงตามลำดับใน ASCII code และ มอก. 620 นะ 💡แต่ถ้าเป็นเลขไทยลำดับจะมาก่อน
ก
ถึงแม้ว่าลำดับใน มอก. 620 จะมากกว่าอักขระ และจะให้ค่ากลับมาเป็นเลขอารบิก 😂 ก็คือ Excel น่าจะมีฟังก์ชันแปลงให้อีกทีแหละ - ฟังก์ชัน SORT เป็นหนึ่งในฟังก์ชันแบบ dynamic array ดังนั้นคุณอาจเจอ
#SPILL!
ได้ อ่านข้อแนะนำการใช้งานได้จาก วิธีแก้ SPILL error ใน Excel
Leave a Reply