Làm cách nào tôi có thể tìm số lần xuất hiện của ký tự (/) từ chuỗi trong Macro VBA Excel.Cách tìm số lần xuất hiện dấu gạch chéo từ một chuỗi
Trả lời
Sử dụng chức năng dưới đây, như trong count = CountChrInString(yourString, "/")
.
'''
''' Returns the count of the specified character in the specified string.
'''
Public Function CountChrInString(Expression As String, Character As String) As Long
'
' ? CountChrInString("a/b/c", "/")
' 2
' ? CountChrInString("a/b/c", "\")
' 0
' ? CountChrInString("//////", "/")
' 6
' ? CountChrInString(" a/b/c ", "/")
' 2
' ? CountChrInString("a/b/c", "/")
' 0
'
Dim iResult As Long
Dim sParts() As String
sParts = Split(Expression, Character)
iResult = UBound(sParts, 1)
If (iResult = -1) Then
iResult = 0
End If
CountChrInString = iResult
End Function
Câu hỏi cũ, nhưng tôi nghĩ tôi sẽ thêm vào chất lượng câu trả lời bằng câu trả lời tôi tìm thấy tại diễn đàn nổi bật. Rõ ràng số lượng cũng có thể được tìm thấy bằng cách sử dụng.
count =Len(string)-Len(Replace(string,"/",""))
tín dụng đầy đủ cho câu trả lời đi vào tác giả ban đầu tại địa chỉ: http://www.ozgrid.com/forum/showthread.php?t=45651
Ha! Tôi chỉ nghĩ về điều đó, nhưng tôi đến đây để xem liệu có một giải pháp tốt hơn không. – GuitarPicker
Đây là một giải pháp dễ dàng cho VBA Excel Macros.
Function CharCount(str As String, chr As String) As Integer
CharCount = Len(str) - Len(Replace(str, chr, ""))
End Function
Và điều gì khiến câu trả lời của bạn khác với Santhosh Divakar? –
Function Count(str as string, character as string) as integer
Count = UBound(Split(str, character))
End Function
BTW, nếu bạn là thành hiệu suất, sau đây là nhanh hơn so với sử dụng phân chia hoặc thay thế để xác định số lượng 20%:
Private Function GetCountOfChar(_
ByRef ar_sText As String, _
ByVal a_sChar As String _
) As Integer
Dim l_iIndex As Integer
Dim l_iMax As Integer
Dim l_iLen As Integer
GetCountOfChar = 0
l_iMax = Len(ar_sText)
l_iLen = Len(a_sChar)
For l_iIndex = 1 To l_iMax
If (Mid(ar_sText, l_iIndex, l_iLen) = a_sChar) Then 'found occurrence
GetCountOfChar = GetCountOfChar + 1
If (l_iLen > 1) Then l_iIndex = l_iIndex + (l_iLen - 1) 'if matching more than 1 char, need to move more than one char ahead to continue searching
End If
Next l_iIndex
End Function
Không phải là một fan hâm mộ lớn của ký hiệu hungarian, nhưng nhờ cho ý kiến được thêm vào :-) – assylias