Comment trouver le nombre d'occurrences du caractère barre oblique (/) dans une chaîne à l'aide d'une macro VBA Excel?
Utilisez la fonction ci-dessous, comme dans 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
Vieille question, mais je pensais que j'ajouterais à la qualité de la réponse par une réponse trouvée sur un forum Excel. Apparemment, le nombre peut également être trouvé en utilisant.
count =Len(string)-Len(Replace(string,"/",""))
La réponse complète va à l'auteur original à l'adresse: http://www.ozgrid.com/forum/showthread.php?t=45651
Function CountOfChar(str as string, character as string) as integer
CountOfChar = UBound(Split(str, character))
End Function
BTW, si vous êtes dans la performance, ce qui suit est 20% plus rapide que d’utiliser split ou replace pour déterminer le nombre:
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
J'aime la réponse de Santhosh Divakar, je l'ai donc développée pour tenir compte de la possibilité de vérifier davantage qu'un seul caractère en divisant le résultat par la longueur des caractères recherchés, comme ceci:
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
Par exemple, le résultat de
Num_Characters_In_String("One/Two/Three/Four//", "//")
vous donne 1, car il n'y a qu'une double barre oblique à la fin de la phrase.
C'est une solution facile pour les macros Excel VBA.
Function CharCount(str As String, chr As String) As Integer
CharCount = Len(str) - Len(Replace(str, chr, ""))
End Function