Vba: วิธีนับจำนวนอักขระในสตริง
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อนับจำนวนอักขระในสตริงโดยใช้ VBA:
Sub CountOccurrences()
Dim i As Integer
'Specify character to look for
my_char = "/"
'Count occurrences in each string in B2:B12 and display results in C2:C12
For i = 2 To 12
Count = (Len(Range(" B " & i)) - Len(Replace(Range(" B " & i), my_char, ""))) / Len(my_char)
Range(" C " & i) = Count
Next i
End Sub
ตัวอย่างนี้จะนับจำนวนครั้งของเครื่องหมายทับ ( / ) ที่เกิดขึ้นในแต่ละเซลล์ในช่วง B2:B12 และแสดงผลลัพธ์ในช่วง C2:C12
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: การนับจำนวนอักขระในสตริงโดยใช้ VBA
สมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน Excel ที่แสดงชื่อของผู้เล่นบาสเกตบอลต่างๆ และตำแหน่งที่พวกเขาสามารถเล่นในเกมได้:
สมมติว่าเราต้องการนับจำนวนเครื่องหมายทับ ( / ) ในแต่ละสตริงในคอลัมน์ตำแหน่ง
เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:
Sub CountOccurrences()
Dim i As Integer
'Specify character to look for
my_char = "/"
'Count occurrences in each string in B2:B12 and display results in C2:C12
For i = 2 To 12
Count = (Len(Range(" B " & i)) - Len(Replace(Range(" B " & i), my_char, ""))) / Len(my_char)
Range(" C " & i) = Count
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
ค่าในคอลัมน์ C แสดงจำนวนครั้งของเครื่องหมายทับในสตริงที่ตรงกันในคอลัมน์ B
ตัวอย่างเช่น:
- สตริง Guard /Forward มี 1 เครื่องหมายทับ
- สตริง Guard มีเครื่องหมายทับ 0 ตัว
- สตริง Guard มีเครื่องหมายทับ 0 ตัว
- สตริง Forward/Center มีเครื่องหมายทับ 1 อัน
และอื่นๆ
หากต้องการนับจำนวนอักขระที่แตกต่างกัน เพียงเปลี่ยนอักขระของตัวแปร my_char ในมาโคร
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:
VBA: วิธีตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่
VBA: วิธีนับจำนวนแถวในช่วง
VBA: วิธีเขียนฟังก์ชัน COUNTIF และ COUNTIFS