Как найти количество провалов Slash из строк

Как узнать количество вхождений символа прямой косой черты (/) в строке с помощью макроса Excel VBA?

Ответ 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.