excel-vba - sirve - diagonal invertida en cmd
Cómo encontrar el número de ocurrencias de barra oblicua de una cadena (6)
Esta es una solución fácil para VBA Excel Macros.
Function CharCount(str As String, chr As String) As Integer
CharCount = Len(str) - Len(Replace(str, chr, ""))
End Function
¿Cómo puedo encontrar el número de apariciones del carácter de barra diagonal (/) dentro de una cadena usando una macro de Excel VBA?
Me gusta la respuesta de Santhosh Divakar, así que la amplié para tener en cuenta la posibilidad cuando desee verificar algo más que un solo carácter al dividir el resultado por la longitud de los caracteres de búsqueda, como este:
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
Como ejemplo, el resultado de
Num_Characters_In_String("One/Two/Three/Four//", "//")
te da 1, porque solo hay una barra doble al final de la oración.
Por cierto, si te gusta el rendimiento, lo siguiente es un 20% más rápido que usar dividir o reemplazar para determinar el conteo:
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
Pregunta antigua, pero pensé que agregaría a la calidad de la respuesta una respuesta que encontré en un foro de Excel. Al parecer el recuento también se puede encontrar usando.
count =Len(string)-Len(Replace(string,"/",""))
El crédito completo por la respuesta va al autor original en: http://www.ozgrid.com/forum/showthread.php?t=45651
Use la siguiente función, como en 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
Function Count(str as string, character as string) as integer
Count = UBound(Split(str, character))
End Function