Vba: วิธีจัดประเภทรายการค่า
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อเรียงลำดับรายการค่าใน Excel โดยใช้ VBA:
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
Next i
End Sub
ตัวอย่างนี้จัดอันดับค่าในเซลล์ B2:B11 และแสดงอันดับในเซลล์ C2:C11
อาร์กิวเมนต์สุดท้ายของ 0 ระบุว่าค่าจะต้องเรียงลำดับจากน้อยไปมาก (ค่าที่ใหญ่ที่สุดจะได้รับอันดับ 1 ค่าที่ใหญ่เป็นอันดับสองจะได้รับอันดับ 2 เป็นต้น)
หากต้องการเรียงลำดับค่าจากมากไปน้อย เพียงแทนที่ 0 ด้วย 1
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: วิธีเรียงลำดับค่าโดยใช้ VBA
สมมติว่าเรามีรายชื่อผู้เล่นบาสเก็ตบอลพร้อมคะแนนที่ทำได้ดังต่อไปนี้:
สมมติว่าเราต้องการคำนวณอันดับของแต่ละค่าในคอลัมน์คะแนน
เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
การจัดอันดับของแต่ละค่าในคอลัมน์คะแนนจะแสดงในคอลัมน์ C
ตัวอย่างเช่น:
- ผู้เล่น H ที่มี 41 แต้มมีค่าแต้มสูงสุด ดังนั้นเขาจึงได้รับอันดับ 1
- ผู้เล่น C ที่มี 40 คะแนนจะมีคะแนนสูงสุดเป็นอันดับสอง ดังนั้นเขาจึงได้รับอันดับที่ 2
และอื่นๆ
หากต้องการจัดอันดับค่าในคอลัมน์คะแนนตามลำดับจากมากไปน้อย เราสามารถเปลี่ยนอาร์กิวเมนต์สุดท้ายของวิธี Rank จาก 0 เป็น 1 :
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 1)
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
การจัดอันดับของแต่ละค่าในคอลัมน์คะแนนจะแสดงในคอลัมน์ C
ตัวอย่างเช่น:
- ผู้เล่นที่ 1 ที่มี 11 แต้มมีค่าแต้มต่ำสุด ดังนั้นเขาจึงได้รับอันดับ 1
- ผู้เล่น E ที่มี 13 แต้มจะมีแต้มต่ำสุดเป็นอันดับสอง ดังนั้นเขาจึงได้อันดับ 2
และอื่นๆ
หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับวิธี VBA Rank ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:
VBA: วิธีนับเซลล์ด้วยข้อความเฉพาะ
VBA: วิธีนับจำนวนแถวในช่วง
VBA: วิธีเขียนฟังก์ชัน COUNTIF และ COUNTIFS