สารบัญ
วันนี้เราจะพิจารณาอย่างใกล้ชิดเกี่ยวกับไวยากรณ์และการใช้งานทั่วไปของฟังก์ชัน SORTBY อาร์เรย์แบบไดนามิกใหม่ คุณจะได้เรียนรู้วิธีการจัดเรียงแบบกำหนดเองใน Excel ด้วยสูตร การเรียงลำดับรายการแบบสุ่ม การจัดเรียงเซลล์ตามความยาวของข้อความ และอื่นๆ
Microsoft Excel มีวิธีมากมายในการจัดเรียงข้อมูลข้อความตามตัวอักษร วันที่ ตามลำดับเวลาและตัวเลขจากน้อยไปมากหรือจากมากไปน้อย นอกจากนี้ยังมีวิธีการจัดเรียงตามรายการที่คุณกำหนดเอง นอกเหนือจากฟังก์ชันการเรียงลำดับแบบเดิมแล้ว Excel 365 ยังแนะนำวิธีใหม่ในการจัดเรียงข้อมูลด้วยสูตร - สะดวกมากและใช้งานง่ายอย่างเหลือเชื่อ!
ฟังก์ชัน Excel SORTBY
ฟังก์ชัน SORTBY ใน Excel ออกแบบมาเพื่อจัดเรียงช่วงหรืออาร์เรย์หนึ่งตามค่าในช่วงหรืออาร์เรย์อื่น การเรียงลำดับสามารถทำได้โดยหนึ่งคอลัมน์หรือหลายคอลัมน์
SORTBY เป็นหนึ่งในหกฟังก์ชันอาร์เรย์แบบไดนามิกใหม่ที่พร้อมใช้งานใน Excel สำหรับ Microsoft 365 และ Excel 2021 ผลลัพธ์คืออาร์เรย์แบบไดนามิกที่กระจายไปยังเซลล์ข้างเคียงและอัปเดตโดยอัตโนมัติเมื่อ การเปลี่ยนแปลงข้อมูลต้นฉบับ
ฟังก์ชัน SORTBY มีจำนวนตัวแปรของอาร์กิวเมนต์ - จำเป็นต้องมีอาร์กิวเมนต์สองตัวแรก และอีกตัวเป็นตัวเลือก:
SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2] ,…)อาร์เรย์ (จำเป็น) - ช่วงของเซลล์หรืออาร์เรย์ของค่าที่จะจัดเรียง
By_array1 (จำเป็น) - ช่วงหรืออาร์เรย์ เพื่อจัดเรียงโดย
Sort_order1 (ไม่บังคับ) - ลำดับการจัดเรียง:
- 1 หรือละเว้น (ค่าเริ่มต้น) - จากน้อยไปมาก
- -1 - จากมากไปน้อย
By_array2 / Sort_order2 , … (ไม่บังคับ) - คู่อาร์เรย์ / ลำดับเพิ่มเติมเพื่อใช้สำหรับการเรียงลำดับ
หมายเหตุสำคัญ! ปัจจุบัน ฟังก์ชัน SORTBY พร้อมใช้งานกับการสมัครใช้งาน Microsoft 365 และ Excel 2021 เท่านั้น ใน Excel 2019, Excel 2016 และเวอร์ชันก่อนหน้า ฟังก์ชัน SORTBY จะไม่พร้อมใช้งาน
ฟังก์ชัน SORTBY - 4 สิ่งที่ต้องจำ
เพื่อให้สูตร SORTBY ของ Excel ทำงานได้อย่างถูกต้อง มีประเด็นสำคัญบางประการที่ต้องสังเกต:
- By_array อาร์กิวเมนต์ควรสูงหนึ่งแถวหรือกว้างหนึ่งคอลัมน์<11
- อาร์กิวเมนต์ อาร์เรย์ และ by_array ทั้งหมดต้องมีมิติที่เข้ากันได้ ตัวอย่างเช่น เมื่อจัดเรียงตามสองคอลัมน์ อาร์เรย์ , by_array1 และ by_array2 ควรมีจำนวนแถวเท่ากัน มิฉะนั้นจะเกิดข้อผิดพลาด #VALUE
- หากอาร์เรย์ที่ SORTBY ส่งกลับเป็นผลลัพธ์สุดท้าย (เอาต์พุตในเซลล์และไม่ได้ส่งผ่านไปยังฟังก์ชันอื่น) Excel จะสร้างช่วงการกระจายแบบไดนามิกและเติมข้อมูลด้วยผลลัพธ์ ดังนั้น ตรวจสอบให้แน่ใจว่าคุณมีเซลล์ว่างเพียงพอด้านล่างและ/หรือทางด้านขวาของเซลล์ที่คุณป้อนสูตร มิฉะนั้น คุณจะได้รับข้อผิดพลาด #SPILL
- ผลลัพธ์ของสูตร SORTBY จะอัปเดตโดยอัตโนมัติเมื่อใดก็ตามที่ การเปลี่ยนแปลงแหล่งข้อมูล อย่างไรก็ตาม รายการใหม่ที่เพิ่มเข้ามานอกอาร์เรย์ที่อ้างอิงในสูตรจะไม่รวมอยู่ในผลลัพธ์ เว้นแต่คุณจะอัปเดตการอ้างอิง อาร์เรย์ เพื่อให้อาร์เรย์ที่อ้างอิงขยายโดยอัตโนมัติ ให้แปลงช่วงต้นทางเป็นตาราง Excel หรือสร้างช่วงที่มีชื่อแบบไดนามิก
สูตร SORTBY พื้นฐานใน Excel
ต่อไปนี้เป็นสถานการณ์ทั่วไปของการใช้ สูตร SORTBY ใน Excel:
สมมติว่าคุณมีรายการโครงการที่มีฟิลด์ ค่า คุณต้องการจัดเรียงโครงการตามมูลค่าในแผ่นงานแยกต่างหาก เนื่องจากผู้ใช้รายอื่นไม่จำเป็นต้องเห็นตัวเลข คุณจึงไม่ควรรวมคอลัมน์ ค่า ไว้ในผลลัพธ์
งานนี้สามารถทำได้ง่ายด้วยฟังก์ชัน SORTBY ซึ่งคุณ ระบุอาร์กิวเมนต์ต่อไปนี้:
- อาร์เรย์ คือ A2:A10 - เนื่องจากคุณไม่ต้องการให้คอลัมน์ ค่า แสดงในผลลัพธ์ คุณจึงปล่อยไว้ ออกจากอาร์เรย์
- By_array1 คือ B2:B10 - จัดเรียงตาม ค่า .
- Sort_order1 คือ -1 - จากมากไปน้อย เช่น จากสูงสุดไปต่ำสุด
เมื่อนำอาร์กิวเมนต์มารวมกัน เราจะได้สูตรนี้:
=SORTBY(A2:B10, B2:B10, -1)
เพื่อความง่าย เราใช้สูตรเดียวกัน แผ่น - ป้อนใน D2 แล้วกดปุ่ม Enter ผลลัพธ์ "รั่วไหล" โดยอัตโนมัติไปยังเซลล์จำนวนมากเท่าที่จำเป็น (D2:D10 ในกรณีของเรา) แต่ในทางเทคนิค สูตรจะอยู่ในเซลล์แรกเท่านั้น และการลบออกจาก D2 จะลบผลลัพธ์ทั้งหมด
เมื่อใช้กับชีตอื่น สูตรจะใช้รูปร่างต่อไปนี้:
=SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)
โดยที่ Sheet1 คือเวิร์กชีตที่มีข้อมูลต้นฉบับ
การใช้ฟังก์ชัน SORTBY ใน Excel - ตัวอย่างสูตร
ด้านล่างนี้ คุณจะพบตัวอย่างเพิ่มเติมของการใช้ SORTBY ซึ่งหวังว่าจะเป็นประโยชน์และให้ข้อมูลเชิงลึก
จัดเรียงตามหลายคอลัมน์
สูตรพื้นฐานที่กล่าวถึงข้างต้นจะจัดเรียงข้อมูลตามหนึ่งคอลัมน์ แต่ถ้าคุณต้องการเพิ่มการเรียงลำดับอีกหนึ่งระดับล่ะ
สมมติว่าตารางตัวอย่างของเรามีสองฟิลด์ สถานะ (คอลัมน์ B) และ ค่า (คอลัมน์ C) เราต้องการเรียงลำดับตาม สถานะ ตามตัวอักษรก่อน จากนั้นตามด้วย ค่า จากมากไปน้อย
หากต้องการจัดเรียงตามสองคอลัมน์ เราเพียงเพิ่มคู่ของ by_array / sort_order arguments:
- Array คือ A2:C10 - ครั้งนี้เราต้องการรวมทั้งสามคอลัมน์ในผลลัพธ์
- By_array1 คือ B2:B10 - อันดับแรก จัดเรียงตาม สถานะ .
- Sort_order1 คือ 1 - เรียงตามตัวอักษรจาก A ถึง Z
- By_array2 คือ C2:C10 - จากนั้น จัดเรียงตาม ค่า .
- Sort_order2 คือ -1 - เรียงลำดับจากมากไปน้อย
ผลลัพธ์ที่ได้คือ
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
ซึ่งจะจัดเรียงข้อมูลของเราใหม่ตามที่เรากำหนด:
การจัดเรียงแบบกำหนดเองใน Excel ด้วยสูตร
ในการจัดเรียงข้อมูลตามลำดับแบบกำหนดเอง คุณสามารถใช้คุณลักษณะการจัดเรียงแบบกำหนดเองของ Excel หรือสร้างสูตร SORTBY MATCH ด้วยวิธีนี้:
SORTBY(อาร์เรย์MATCH( range_to_sort , custom_list , 0))เมื่อพิจารณาชุดข้อมูลของเราอย่างใกล้ชิด คุณอาจพบว่าสะดวกกว่าในการจัดเรียงโครงการตามสถานะ "อย่างมีเหตุผล" , เช่น. ตามความสำคัญ แทนที่จะเรียงตามตัวอักษร
เพื่อให้เสร็จ ขั้นแรก เราสร้างรายการที่กำหนดเองในลำดับการจัดเรียงที่ต้องการ ( กำลังดำเนินการ , เสร็จสมบูรณ์ , ถูกระงับ ) พิมพ์แต่ละค่าในเซลล์ที่แยกจากกันในช่วง E2:E4
จากนั้น เราใช้สูตรทั่วไปด้านบน เราจัดหาช่วงแหล่งที่มาสำหรับ อาร์เรย์ (A2 :C10) คอลัมน์ สถานะ สำหรับ range_to_sort (B2:B10) และรายการกำหนดเองที่เราสร้างขึ้นสำหรับ custom_list (E2:E4)<3
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))
ด้วยเหตุนี้ เราจึงได้จัดเรียงโครงการตามสถานะตามที่ต้องการ:
หากต้องการจัดเรียงตามรายการที่กำหนดเองในลำดับย้อนกลับ ให้ใส่ -1 สำหรับ sort_order1 อาร์กิวเมนต์:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)
และคุณจะจัดเรียงโครงการในทิศทางตรงกันข้าม:
ต้องการจัดเรียงเรกคอร์ดเพิ่มเติมภายในแต่ละสถานะหรือไม่ ไม่มีปัญหา. เพียงเพิ่มระดับการจัดเรียงอีกหนึ่งระดับลงในสูตร พูดตาม ค่า (C2:C10) และกำหนดการเรียงลำดับที่ต้องการ โดยเรียงลำดับจากน้อยไปมากในกรณีของเรา:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)
ข้อได้เปรียบที่สำคัญของสูตร SORTBY เหนือฟีเจอร์การจัดเรียงแบบกำหนดเองของ Excel คือสูตรจะอัปเดตโดยอัตโนมัติทุกครั้งที่ข้อมูลต้นฉบับเปลี่ยนแปลง ในขณะที่ฟีเจอร์นี้ต้องการการล้างข้อมูลและจัดเรียงใหม่เมื่อมีการเปลี่ยนแปลงแต่ละครั้ง
วิธีการ สูตรนี้ทำงาน:
ตามที่ได้กล่าวไปแล้ว ฟังก์ชัน SORTBY ของ Excel สามารถประมวลผลได้เฉพาะอาร์เรย์ "เรียงลำดับตาม" ที่มีขนาดเข้ากันได้กับอาร์เรย์ต้นทางเท่านั้น เนื่องจากอาร์เรย์ต้นทาง (C2:C10) ของเรามี 9 แถวและรายการที่กำหนดเอง (E2:E4) เพียง 3 แถว เราจึงไม่สามารถระบุอาร์กิวเมนต์ by_array ได้โดยตรง เราใช้ฟังก์ชัน MATCH เพื่อสร้างอาร์เรย์ 9 แถวแทน:
MATCH(B2:B10, E2:E5, 0)
ที่นี่ เราใช้คอลัมน์ สถานะ (B2:B10) เป็นค่าการค้นหาและ รายการที่กำหนดเองของเรา (E2:E5) เป็นอาร์เรย์การค้นหา อาร์กิวเมนต์สุดท้ายถูกกำหนดเป็น 0 เพื่อค้นหาข้อมูลที่ตรงกันทั้งหมด ผลที่ได้คือ เราได้รับอาร์เรย์ของตัวเลข 9 ตัว ซึ่งแต่ละตัวแทนตำแหน่งสัมพัทธ์ของค่า สถานะ ที่ระบุในรายการที่กำหนดเอง:
{1;3;2;1;3;2;2;1;2}
อาร์เรย์นี้ไปโดยตรง ไปยังอาร์กิวเมนต์ by_array ของฟังก์ชัน SORTBY และบังคับให้วางข้อมูลตามลำดับที่สอดคล้องกับองค์ประกอบของอาร์เรย์ เช่น รายการแรกแสดงด้วย 1 จากนั้นจึงแสดงรายการด้วย 2 เป็นต้น
การเรียงลำดับแบบสุ่มใน Excel ด้วยสูตร
ใน Excel เวอร์ชันก่อนหน้า คุณสามารถทำการเรียงลำดับแบบสุ่มด้วยฟังก์ชัน RAND ตามที่อธิบายไว้ในบทช่วยสอนนี้: วิธีจัดเรียงรายการแบบสุ่มใน Excel
ใน Excel ใหม่ คุณสามารถใช้ฟังก์ชัน RANDARRAY ที่มีประสิทธิภาพมากขึ้นร่วมกับ SORTBY:
SORTBY( array , RANDARRAY(ROWS( array )))โดยที่ อาร์เรย์ คือแหล่งข้อมูลที่คุณต้องการสับเปลี่ยน
สูตรทั่วไปนี้ใช้ได้กับรายการที่ประกอบด้วยคอลัมน์เดียวและสำหรับช่วงหลายคอลัมน์
ตัวอย่างเช่น หากต้องการเรียงลำดับรายการแบบสุ่มใน A2:A10 ให้ใช้สูตรนี้:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
ในการสุ่ม ข้อมูลใน A2:C10 ทำให้แถวอยู่ด้วยกัน ใช้อันนี้:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
สูตรนี้ทำงานอย่างไร:
ฟังก์ชัน RANDARRAY สร้างอาร์เรย์ ของตัวเลขสุ่มที่จะใช้สำหรับการเรียงลำดับ และคุณส่งผ่านในอาร์กิวเมนต์ by_array ของ SORTBY หากต้องการระบุจำนวนตัวเลขสุ่มที่จะสร้าง คุณต้องนับจำนวนแถวในช่วงแหล่งที่มาโดยใช้ฟังก์ชัน ROWS และ "ป้อน" หมายเลขนั้นไปยังอาร์กิวเมนต์ แถว ของ RANDARRAY แค่นั้นแหละ!
หมายเหตุ เช่นเดียวกับรุ่นก่อนหน้า RANDARRAY เป็นฟังก์ชันที่ไม่แน่นอน และสร้างอาร์เรย์ของตัวเลขสุ่มใหม่ทุกครั้งที่มีการคำนวณแผ่นงานใหม่ ด้วยเหตุนี้ ข้อมูลของคุณจะเปลี่ยนไปตามการเปลี่ยนแปลงแต่ละครั้งในแผ่นงาน เพื่อป้องกันการเปลี่ยนอัตโนมัติ คุณสามารถใช้คุณลักษณะ วางแบบพิเศษ > ค่า เพื่อแทนที่สูตรด้วยค่าต่างๆ
จัดเรียงเซลล์ตามความยาวของสตริง
หากต้องการจัดเรียงเซลล์ตามความยาวของสตริงข้อความที่มี ให้ใช้ฟังก์ชัน LEN เพื่อนับจำนวนอักขระในแต่ละเซลล์ และระบุความยาวที่คำนวณได้ให้กับอาร์กิวเมนต์ by_array ของ SORTBY อาร์กิวเมนต์ sort_order สามารถตั้งค่าเป็น 1 หรือ -1 ขึ้นอยู่กับลำดับการจัดเรียงที่ต้องการ
ในการจัดเรียงตามสตริงข้อความจากน้อยไปมาก:
SORTBY(array, LEN(อาร์เรย์), 1)เพื่อจัดเรียงสตริงข้อความจากมากไปน้อย:
SORTBY(array, LEN(array), -1)และนี่คือสูตรที่สาธิตวิธีนี้กับข้อมูลจริง:
=SORTBY(A2:A7, LEN(A2:A7), 1)
โดยที่ A2:A7 เป็นเซลล์ดั้งเดิมที่คุณต้องการจัดเรียงตามความยาวของข้อความโดยเรียงลำดับจากน้อยไปมาก:
SORTBY vs. SORT
ในกลุ่มของฟังก์ชันอาร์เรย์แบบไดนามิกใหม่ของ Excel มีสอง ออกแบบมาสำหรับการจัดเรียง ด้านล่างเราจะแสดงรายการความแตกต่างและความคล้ายคลึงกันที่สำคัญที่สุด รวมถึงเวลาที่เหมาะสมที่สุดที่จะใช้แต่ละรายการ
- ไม่เหมือนกับฟังก์ชัน SORT ตรงที่ SORTBY ไม่ต้องการอาร์เรย์ "จัดเรียงตาม" เพื่อเป็นส่วนหนึ่งของแหล่งที่มา อาร์เรย์ และไม่จำเป็นต้องปรากฏในผลลัพธ์ ดังนั้น เมื่องานของคุณคือการจัดเรียงช่วงตามอาร์เรย์อิสระอื่นหรือรายการแบบกำหนดเอง SORTBY จึงเป็นฟังก์ชันที่เหมาะสมที่จะใช้ หากคุณต้องการจัดเรียงช่วงตามค่าของตัวเอง SORT จะเหมาะสมกว่า
- ทั้งสองฟังก์ชันรองรับการเรียงลำดับหลายระดับ และทั้งสองสามารถเชื่อมโยงเข้าด้วยกันกับอาร์เรย์ไดนามิกและฟังก์ชันทั่วไป
- ทั้งสองฟังก์ชันพร้อมใช้งานสำหรับผู้ใช้ Excel 365 และ Excel 2021 เท่านั้น
ฟังก์ชัน SORTBY ของ Excel ไม่ทำงาน
ในกรณีที่สูตร SORTBY ส่งกลับข้อผิดพลาด เป็นไปได้มากว่าเกิดจาก หนึ่งในเหตุผลต่อไปนี้
อาร์กิวเมนต์ by_array ไม่ถูกต้อง
อาร์กิวเมนต์ by_array ต้องเป็นแถวเดียวหรือคอลัมน์เดียวและเข้ากันได้กับขนาด อาร์เรย์ อาร์กิวเมนต์ ตัวอย่างเช่น ถ้า อาร์เรย์ มี 10แถว by_array ควรมี 10 แถวด้วย มิฉะนั้น #VALUE! เกิดข้อผิดพลาด
อาร์กิวเมนต์ sort_order ไม่ถูกต้อง
อาร์กิวเมนต์ sort_order สามารถเป็น 1 (จากน้อยไปมาก) หรือ -1 (จากมากไปน้อย) เท่านั้น ถ้าไม่ได้ตั้งค่าไว้ SORTBY จะใช้ค่าเริ่มต้นเป็นลำดับจากน้อยไปหามาก หากมีการตั้งค่าอื่นไว้ เครื่องหมาย #VALUE! ข้อผิดพลาดถูกส่งกลับ
มีพื้นที่ไม่เพียงพอสำหรับผลลัพธ์
เช่นเดียวกับฟังก์ชันไดนามิกอาร์เรย์อื่นๆ SORTBY กระจายผลลัพธ์เป็นช่วงที่ปรับขนาดได้โดยอัตโนมัติและอัปเดตได้ หากมีเซลล์ว่างไม่เพียงพอที่จะแสดงค่าทั้งหมด #SPILL! เกิดข้อผิดพลาด
สมุดงานต้นทางถูกปิด
ถ้าสูตร SORTBY อ้างอิงไฟล์ Excel อื่น สมุดงานทั้งสองจะต้องเปิดอยู่ ถ้าสมุดงานต้นทางถูกปิด #REF! เกิดข้อผิดพลาดขึ้น
เวอร์ชัน Excel ของคุณไม่รองรับอาร์เรย์แบบไดนามิก
เมื่อใช้ใน Excel เวอร์ชันก่อนไดนามิก ฟังก์ชัน SORT จะส่งกลับ #NAME? ข้อผิดพลาด
นั่นคือวิธีการใช้ฟังก์ชัน SORTBY ใน Excel เพื่อทำการจัดเรียงแบบกำหนดเองและอื่นๆ ฉันขอขอบคุณที่อ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
คู่มือแบบฝึกหัดสำหรับการดาวน์โหลด
สูตร Excel SORTBY (ไฟล์ .xlsx)