Cuenta el número de ocurrencias de subcadenas


-1

Soy un usuario básico de Excel, estoy manejando un libro de trabajo de Excel en la versión 2016, tengo una consulta de la siguiente manera:

Tengo 9 hojas de trabajo en un libro de Excel y una columna específica en cada hoja que muestra una serie de números de referencia como:

GAD5-CDC-T2-349-230315-DWG-PP-STR-0114-0
GAD5-MGM-T2-349-230315-DWG-PP-STR-0114-0
GAD5-CDC-T2-349-230315-DWG-SD-STR-0114-0
GAD5-MGM-T2-363-250315-DWG-PP-STR-0119-0
GAD5-CDC-T2-363-250315-DWG-DD-STR-0119-0
GAD5-CDC-T2-363-250315-DWG-BD-STR-0119-0
GAD5-CDC-T2-259-51-050515-DWG-FD-S-0233-00
GAD5-CDC-T2-259-51-050515-DWG-TD-S-0233-00
GAD5-MGM-T2-259-51-050515-DWG-LD-S-0233-00
GAD5-MGM-T3-119-25-DDS-ST-1568-02
GAD5-MGM-T3-119-25-DDS-RT-1568-02
GAD5-MGM-T3-119-25-DDS-OT-1568-02

y así sucesivamente, tenga en cuenta que estos números no siguen ninguna secuencia. Quiero contar la cantidad de veces que aparece la segunda última serie de números. En este caso

  • 0114 es 3 veces
  • 0119 es 3 veces
  • 0233 es 3 veces y
  • 1568 es 3 veces

Quiero contar esto por una fórmula y obtener el resultado en cualquier otra celda como contador. Te agradecería si pudieras ayudarme en esto, por favor.


Usted dice que el número no sigue ninguna secuencia, pero su ejemplo muestra el segmento de interés agrupado en registros consecutivos. ¿Es ese siempre el caso?
Fixer1234

¿Puedes mostrar lo que has probado? Podría hacer esto en VBa pero parece que solo quieres una función de hoja de trabajo
Dave

La lógica es dividir el contenido por -y luego usar el segundo del último. ¿Puede confirmar si esa lógica es correcta y siempre es el caso (según los datos que ha proporcionado)?
Dave

Respuestas:


0

Según la información que ha proporcionado, este VBa lo hace. Sé que no solicitó VBa, pero escribí esto en caso de que no obtenga otra respuesta, y puede ayudar a otros (¡y funciona!)

Tendrá que formatear la columna B como tipo Texto (suponiendo que la columna B es donde desea los resultados)

Supuse que los datos serán secuenciales según su ejemplo.

Sub WalkThePlank()

Dim startRow As Integer
startRow = 1                        'Update this cap'ain as ye like

Dim column As String
column = "A"                        'The column for ye data

Dim resultsColumn As String
resultsColumn = "B"                 'This be the column you want the results!

Dim resultsColumnCount As String
resultsColumnCount = "C"                 'This be the column you want the results!


Do While (Range(column & startRow).Value <> "")

    Dim content As String
    content = Range(column & startRow).Value

    Dim splitty() As String
    splitty = Split(content, "-")

    Dim resultDigit As String ' must be string as your values start with a 0
    resultDigit = splitty(UBound(splitty) - 1)

    Dim resultsRow As Integer
    resultsRow = 1

    Do While (Range(resultsColumn & resultsRow).Value <> "")

        Dim resultsVal As String
        resultsVal = Range(resultsColumn & resultsRow).Value

        If resultsVal = resultDigit Then
            Range(resultsColumnCount & resultsRow).Value = Range(resultsColumnCount & resultsRow).Value + 1
        End If

        If resultsVal <> resultDigit And Range(resultsColumn & resultsRow + 1).Value = "" Then
            Range(resultsColumn & resultsRow + 1).Value = resultDigit
            Range(resultsColumnCount & resultsRow + 1).Value = 0
        End If


        resultsRow = resultsRow + 1
    Loop


    If (Range(resultsColumn & "1").Value = "") Then
        Range(resultsColumn & "1").Value = resultDigit
        Range(resultsColumnCount & "1").Value = 1
    End If

startRow = startRow + 1
Loop


End Sub

antes de

ingrese la descripción de la imagen aquí

Después

ingrese la descripción de la imagen aquí

La única diferencia en los datos es que no he usado 3 de cada uno, he usado valores diferentes para mostrar que cuenta correctamente.

¿Cómo agrego VBA en MS Office?

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.