ฟังก์ชัน Excel SORTBY - จัดเรียงแบบกำหนดเองด้วยสูตร

  • แบ่งปันสิ่งนี้
Michael Brown

วันนี้เราจะพิจารณาอย่างใกล้ชิดเกี่ยวกับไวยากรณ์และการใช้งานทั่วไปของฟังก์ชัน 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)

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้