Как узнать количество вхождений символа прямой косой черты (/) в строке с помощью макроса Excel VBA?
Как найти количество провалов Slash из строк
Ответ 1
Используйте следующую функцию, как в 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
Ответ 2
Старый вопрос, но я думал, что добавлю к качеству ответа ответ, который я нашел на форуме excel. По-видимому, счет также можно найти с помощью.
count =Len(string)-Len(Replace(string,"/",""))
Полный кредит на ответ принадлежит оригинальному автору по адресу: http://www.ozgrid.com/forum/showthread.php?t=45651
Ответ 3
Function CountOfChar(str as string, character as string) as integer
CountOfChar = UBound(Split(str, character))
End Function
Ответ 4
BTW, если вы входите в производительность, на 20% быстрее, чем использование split или replace для определения количества:
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
Ответ 5
Мне нравится ответ Santhosh Divakar, поэтому я расширил его, чтобы учесть возможность, когда вы хотите проверить наличие более чем одного символа, разделив результат на длину символов поиска, например:
Function Num_Characters_In_String(Input_String As String, Search_Character As String) As Integer
'Returns the number of times a specified character appears in an input string by replacing them with an empty string
' and comparing the two string lengths. The final result is then divided by the length of the Search_Character to
' provide for multiple Search Characters.
Num_Characters_In_String = (Len(Input_String) - Len(Replace(Input_String, Search_Character, ""))) / Len(Search_Character)
End Function
Как пример, результат
Num_Characters_In_String("One/Two/Three/Four//", "//")
дает вам 1, потому что есть только двойной слеш в конце предложения.
Ответ 6
Это простое решение для макросов VBA Excel.
Function CharCount(str As String, chr As String) As Integer
CharCount = Len(str) - Len(Replace(str, chr, ""))
End Function
Ответ 7
Здесь однострочная версия для использования, когда вы не хотите вызывать отдельную функцию. Это просто сжатая версия CountChrInString и некоторые другие выше.
? UBound(Split("abcabcabc", "cd"), 1)
Это вернет 0. Если вы измените "cd" на "ab", он вернет 3. Он также работает с переменными. Обратите внимание, что если проверяемая строка (abcabc...) пуста, она вернет -1.