2012-02-13 11 views

Respuesta

10

Utilice la función de abajo, 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 
+0

No es un gran fan de la notación húngara, pero gracias para los comentarios adicionales :-) – assylias

17

Pregunta anterior, pero pensé que agregaría a la calidad de la respuesta una respuesta que encontré en un foro de Excel. Aparentemente el conteo también se puede encontrar usando.

count =Len(string)-Len(Replace(string,"/","")) 

de crédito total para la respuesta va al autor original en: http://www.ozgrid.com/forum/showthread.php?t=45651

+1

¡Ja! Solo pensé en eso, pero vine aquí para ver si había una mejor solución. – GuitarPicker

0

Esta es una solución fácil para VBA macros de Excel.

Function CharCount(str As String, chr As String) As Integer 
    CharCount = Len(str) - Len(Replace(str, chr, "")) 
End Function 
+0

¿Y qué hace que tu respuesta sea diferente a la de Santhosh Divakar? –

3
Function Count(str as string, character as string) as integer 
     Count = UBound(Split(str, character)) 
End Function 
0

Por cierto, si usted está en funcionamiento, el siguiente es un 20% más rápido que el uso de dividir o sustituir para determinar el recuento:

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 
Cuestiones relacionadas