วิธีจัดเรียงช่วงโดยใช้ VBA ใน Excel (6 ตัวอย่าง)

  • แบ่งปันสิ่งนี้
Hugh West

การรู้วิธีจัดเรียงช่วงโดยใช้ VBA ใน Excel ช่วยประหยัดเวลาและแรงในการคำนวณรายวันของเรา แม้ว่า Excel จะจัดเตรียมสิ่งอำนวยความสะดวกในการเรียงลำดับตามค่าเริ่มต้น เมื่อใช้ Range.Sort เมธอด เราสามารถเข้าถึงพารามิเตอร์หลายตัวเพื่อจัดเรียงชุดข้อมูลที่มีตัวเลือกมากกว่าปกติ

ดาวน์โหลดสมุดงานแบบฝึกหัด

ดาวน์โหลดคู่มือแบบฝึกหัดนี้เพื่อใช้ฝึกในขณะที่คุณอ่านบทความนี้

เรียงลำดับช่วงใน Excel.xlsm

รู้เบื้องต้นเกี่ยวกับคำสั่ง Range.Sort ใน Excel VBA

วัตถุประสงค์ : เพื่อจัดเรียงช่วงของข้อมูลเซลล์

ไวยากรณ์:

นิพจน์ .Sort ( Key1 , Order1 , Key2 , ประเภท , Order2 , Key3 , Order3 , Header , OrderCustom , MatchCase , การวางแนว , SortMethod , DataOption1 , DataOption2 , DataOption3 )

ในที่นี้ นิพจน์ แสดงถึง ช่วง วัตถุ เช่น เซลล์ แถว คอลัมน์ หรือการเลือกเซลล์

อาร์กิวเมนต์:

เราจำเป็นต้องจัดเตรียมพารามิเตอร์หลัก สาม พารามิเตอร์สำหรับเมธอด Range.Sort พวกเขาคือ-

คีย์ – ช่วงของเซลล์จากคอลัมน์เดียวหรือหลายคอลัมน์ที่เราต้องการจัดเรียง

ลำดับ – ระบุลำดับการจัดเรียงอย่างใดอย่างหนึ่ง ขึ้นหรือลง

ส่วนหัว – ประกาศว่าคอลัมน์ที่จะจัดเรียงมีส่วนหัวหรือไม่

6 ตัวอย่างการจัดเรียงช่วงใน Excel VBA

ในบทความนี้เป็นชุดข้อมูล เราจะใช้รายชื่อบุคคลพร้อมวันเกิดและอายุ เราจะใช้วิธีการต่างๆ ในการจัดเรียงชุดข้อมูล ลองอ่านบทความและฝึกฝนเพื่อให้เชี่ยวชาญวิธีการเหล่านี้

1. จัดเรียงช่วงคอลัมน์เดียวโดยใช้ Excel VBA

ในตัวอย่างนี้ เราจะ จัดเรียง คนจาก แก่ที่สุด ถึง อายุน้อยที่สุด . มาทำตามขั้นตอนการใช้ ช่วง . จัดเรียง เมธอด ที่จะ จัดเรียง คอลัมน์ อายุ ใน ลำดับจากมากไปน้อย .

ขั้นตอน:

  • ไปที่ แท็บนักพัฒนาซอฟต์แวร์ ใน Excel Ribbon ถึง คลิก บน Visual Basic

  • จากนั้นเลือก ตัวเลือกโมดูล จาก แท็บแทรก เพื่อเปิด โมดูลใหม่

ตอนนี้ เราจะใส่โค้ดของเราไปที่ จัดเรียง ช่วงคอลัมน์ อายุ

1.1 คอลัมน์ที่มีส่วนหัว

ใส่โค้ดต่อไปนี้ในโปรแกรมแก้ไขโค้ดภาพ

2027

กด F5 หรือคลิกปุ่ม เรียกใช้ เพื่อ เรียกใช้ โค้ด

คำอธิบาย:

ในโค้ดข้างต้น เราใส่-

Expression (Range object)=Range(“D4:D11”); คอลัมน์ อายุ ที่มี ส่วนหัว ใน เซลล์ D4 และ ค่า ใน D5:D11

คีย์ = ช่วง("D4"); ปุ่ม สำหรับ การเรียงลำดับ

Order= xlDescending; ตามที่เราต้องการ เรียงลำดับ ค่าจาก ใหญ่ที่สุด ถึง ต่ำสุด เราตั้งค่าลำดับการเรียงลำดับ เป็น จากมากไปน้อย

Header =xlYes; ในภาพหน้าจอต่อไปนี้ เราจะเห็นว่า ชุดข้อมูล มี ส่วนหัว สำหรับแต่ละ คอลัมน์

1.2 คอลัมน์ที่ไม่มีส่วนหัว

ใส่สิ่งต่อไปนี้ ในตัวแก้ไขโค้ดภาพ

9809

กด F5 หรือคลิกปุ่ม เรียกใช้ เพื่อ ดำเนินการ โค้ด

คำอธิบาย:

ในโค้ดข้างต้น เราใส่-

Expression (Range object)=Range(“D4 :D10”); คอลัมน์ อายุ ไม่มี ส่วนหัว มี ค่า ใน D4:D10.

คีย์ = ช่วง("D4"); ปุ่ม สำหรับ การเรียงลำดับ

Order= xlDescending; ตามที่เราต้องการ เรียงลำดับ ค่าจาก ใหญ่ที่สุด ถึง ต่ำสุด เราตั้งค่า ลำดับการเรียง เป็น มากไปหาน้อย<2

ส่วนหัว =xlNo; ในภาพหน้าจอต่อไปนี้ เราจะเห็นว่า ชุดข้อมูล ไม่มี ส่วนหัว

เนื้อหาที่เกี่ยวข้อง: วิธีจัดเรียงคอลัมน์ใน Excel โดยไม่ผสมข้อมูล (3 วิธี)

2. การใช้โค้ด VBA เพื่อจัดเรียงช่วงคอลัมน์หลายคอลัมน์ใน Excel

หากต้องการแสดงการเรียงลำดับใน หลายคอลัมน์ เราจำเป็นต้อง แก้ไข ชุดข้อมูล เล็กน้อย เรา แทรก สองสาม ใหม่ แถว ในชุดข้อมูลที่แก้ไข แถว 7, 8, และ 9 มีค่า เหมือนกัน สำหรับ วันเดือนปีเกิด และ อายุ แต่ สามชื่อที่แตกต่างกัน ชื่อ เหล่านี้ ไม่ได้ อยู่ใน ลำดับใดโดยเฉพาะ จากน้อยไปหามากหรือมากไปหาน้อย

ในตัวอย่างนี้ เราจะเรียงลำดับชื่อใน จากน้อยไปมาก ลองรันโค้ดต่อไปนี้ใน Visual Basic Editor:

5686

คำอธิบาย:

ในข้างต้น ภาพหน้าจอ เราจะเห็นว่าอายุใน คอลัมน์ D นั้น จัดเรียง ใน จากมากไปหาน้อย ตามลำดับ เราได้เพิ่ม พารามิเตอร์อีกสองตัว ในโค้ดก่อนหน้าของเรา

Key2: =Range(“B4”) ซึ่งเป็นคีย์สำหรับจัดเรียงชื่อ

ลำดับที่ 2: =xlAscending ซึ่งเป็น ลำดับ สำหรับ ชื่อย่อ .

ด้วยเหตุนี้ เราจึงเห็น ชื่อ ใน แถวที่ 7, 8 และ 9 ขณะนี้ เรียงตามตัวอักษร เรียงลำดับ จากน้อยไปหามาก

ในภาพหน้าจอต่อไปนี้ เราได้เปลี่ยน ค่า ของพารามิเตอร์ Order2 เป็น เรียงลำดับ ชื่อ ในลำดับ จากมากไปหาน้อย

อ่านเพิ่มเติม: วิธีจัดเรียงหลายคอลัมน์ใน Excel (5 แนวทางด่วน)

3. ดับเบิลคลิกที่ส่วนหัวเพื่อจัดเรียงช่วงคอลัมน์ใน Excel VBA

คุณลักษณะการเรียงลำดับเริ่มต้นของ Excel ไม่อนุญาตให้ จัดเรียงค่า ของคอลัมน์ตาม ดับเบิลคลิก ที่ ส่วนหัวของคอลัมน์ แต่การใช้รหัส VBA เราสามารถทำให้มันเกิดขึ้นได้ เรามาแสดงฟังก์ชันนี้โดยใช้โค้ดต่อไปนี้

6872

ในโค้ดนี้ เราใช้เหตุการณ์ BeforeDoubleClick เพื่อ ปิดใช้งานการดับเบิลปกติ คลิก ซึ่งจะเป็นการเริ่มโหมด แก้ไข ของเซลล์ กับเหตุการณ์นี้ทำงาน ถ้าเรา ดับเบิล คลิก ที่ ส่วนหัวของคอลัมน์ ใด ๆ มันจะจัดเรียงข้อมูลคอลัมน์ใน ลำดับจากน้อยไปมาก .

อ่านเพิ่มเติม: VBA เพื่อจัดเรียงคอลัมน์ใน Excel (4 วิธี)

การอ่านที่คล้ายกัน:

    <14 วิธีเพิ่มปุ่มจัดเรียงใน Excel (7 วิธี)
  • จัดเรียงรายการที่ไม่ซ้ำใน Excel (10 วิธีที่เป็นประโยชน์)
  • วิธี การใช้ฟังก์ชันการเรียงลำดับใน Excel VBA (8 ตัวอย่างที่เหมาะสม)
  • เรียงลำดับรายการที่ซ้ำกันใน Excel (คอลัมน์และแถว)
  • การเรียงลำดับแบบสุ่มใน Excel ( สูตร + VBA)

4. จัดเรียงช่วงของคอลัมน์ตามสีพื้นหลังโดยใช้ Excel VBA

เราสามารถจัดเรียงช่วงของเซลล์ในคอลัมน์ ตาม ตาม สีพื้นหลัง . ในการทำเช่นนั้น เราต้อง เพิ่ม a พารามิเตอร์ ชื่อ SortOn ซึ่งมีค่า xlSortOnCellColor เพื่อสาธิตการเรียงลำดับ ก่อนอื่นเราจะตั้งค่า สีพื้นหลัง ต่างๆ ให้กับแถวของ ชุดข้อมูล ของเรา

จากนั้นใน Visual Basic ตัวแก้ไขโค้ด คัดลอก โค้ดต่อไปนี้แล้วกด F5 เพื่อเรียกใช้โค้ด

4020

ในภาพหน้าจอต่อไปนี้ เราจะเห็น ชุดข้อมูลที่เรียงลำดับ ตาม บนสีพื้นหลัง

คำอธิบาย:

  • ในตัวอย่างนี้ เราตั้งชื่อ แผ่นงาน พื้นหลัง ” ดังนั้นในโค้ด เราใส่ “ พื้นหลัง ” เป็น ชื่อเวิร์กชีตที่ใช้งานอยู่ของเรา
  • เราตั้งค่า B4 เป็นคีย์ และ B4:D10 เป็น ช่วง รหัสจะจัดเรียงข้อมูลตามคีย์
  • เนื่องจากเราไม่ได้ระบุ พารามิเตอร์ส่วนหัว โค้ดจึงรันตามค่าดีฟอลต์ ไม่มีส่วนหัว
  • เราตั้งค่าพารามิเตอร์ ลำดับ เป็น จากน้อยไปหามาก ดังนั้นจึงจัดเรียงข้อมูลจากค่าน้อยไปมาก .

อ่านเพิ่มเติม: วิธีจัดเรียงตามสีใน Excel (4 เกณฑ์)

5. ใช้โค้ด VBA เพื่อจัดเรียงช่วงคอลัมน์ตามสีฟอนต์

ด้วยการใช้โค้ด VBA เราสามารถจัดเรียงชุดข้อมูลของเราตาม สีฟอนต์ อันดับแรก เราต้อง ระบายสีแถวต่างๆ เพื่อแสดงตัวอย่าง

ใช้โค้ดด้านล่างเพื่อจัดเรียงชุดข้อมูลตาม สีแบบอักษร

5234

คำอธิบาย:

  • ในนี้ ตัวอย่าง เราตั้งชื่อ เวิร์กชีต fontcolor ” ดังนั้นในโค้ด เราใส่ “ fontcolor ” เป็น ชื่อเวิร์กชีตที่ใช้งานอยู่ของเรา
  • เราตั้งค่า B4 เป็นคีย์ และ B4:D11 เป็น ช่วง รหัสจะจัดเรียงข้อมูลตามคีย์
  • ในตัวอย่างนี้ เราระบุพารามิเตอร์ส่วนหัวเป็น xlใช่ ด้วย
  • ที่นี่ เราตั้งค่าลำดับ พารามิเตอร์เป็น จากน้อยไปหามาก ดังนั้นมันจึงเรียงลำดับข้อมูลจากค่าที่ต่ำกว่าไปหาค่าที่สูงกว่า .
  • ค่าของพารามิเตอร์ SortOn คือ
  • พารามิเตอร์ การวางแนว เก็บค่า xlTopToBottom ตามที่จำเป็น
  • สี เพื่อจัดเรียงอยู่ในเงื่อนไข RGB ซึ่ง มีค่าจาก 0 ถึง 255 .

อ่านเพิ่มเติม: วิธีจัดเรียงสองคอลัมน์ใน Excel เพื่อให้ตรงกัน (ทั้งแบบตรงทั้งหมด และการจับคู่บางส่วน)

6. เปลี่ยนการวางแนวเพื่อจัดเรียงช่วงโดยใช้ Excel VBA

การใช้พารามิเตอร์ การวางแนว ทำให้เราสามารถเปลี่ยนวิธีที่เราต้องการจัดเรียงข้อมูลได้ ในตัวอย่างนี้ เราได้ เปลี่ยน ชุดข้อมูลของเราเป็น จัดเรียง เป็น แนวนอน แล้ว

ลองใส่ โค้ดต่อไปนี้ในตัวแก้ไข Visual Basic และกด F5 เพื่อเรียกใช้

1312

ที่นี่ เรา จัดเรียง ข้อมูลตาม แถวอายุ ใน จากน้อยไปหามาก เรียงลำดับจาก ซ้าย ไป ขวา ในโค้ด เราตั้งค่าพารามิเตอร์ การวางแนว เป็น xlSortRows .

เนื้อหาที่เกี่ยวข้อง: วิธีจัดเรียงหลายคอลัมน์อัตโนมัติใน Excel (3 วิธี)

ข้อควรจำ

  • พารามิเตอร์ SortOn ที่เราใช้ในการ จัดเรียง ช่วงคอลัมน์ตาม สีพื้นหลัง และ สีฟอนต์ สามารถใช้ได้เฉพาะ วัตถุแผ่นงาน เราไม่สามารถใช้กับ range object ได้
  • เหตุการณ์ BeforeDoubleClick จัดเรียงข้อมูลใน จากน้อยไปมากเท่านั้น
<4 สรุป

ตอนนี้ เรารู้วิธีจัดเรียงช่วงโดยใช้ VBA ใน Excel หวังว่าจะช่วยให้คุณใช้สิ่งนี้ได้อย่างมั่นใจมากขึ้น คำถามหรือข้อเสนอแนะใด ๆ อย่าลืมใส่ไว้ในช่องแสดงความคิดเห็นด้านล่าง

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