6 de abril de 2009

Contar subcadenas en cadena

En mundoexcel.com, uno de los foros que frecuento, un usuario envió esta consulta:

Hola tengo una gran pequeña duda y por mas que leo y busco no encuentro la solucion: quiero contar cuantas veces esta escrita una letra en una celda.

Ejemplo:

Palabra " Antonio"

Mi pregunta es cuantas letras "O" tiene esa palabra.


La solución que propuse fue utilizar una fórmula matricial, como sigue:

Supongamos que en A2 está la palabra "Antonio", en B2 la letra a contar "o".

En C2 escribe la siguiente fórmula matricial:

=SUMA(--(EXTRAE(A2,FILA(INDIRECTO("1:"&LARGO(A2))),1)=B2))


Recuerda aceptarla con Ctrl + Shift + Enter.

LARGO(A2) devuelve el número de caracteres de Antonio, 7.

INDIRECTO devuelve el string "1:7", que sirve de argumento a FILA.

FILA(1:7) genera una lista de consecutivos de 1 a 7. En otras palabras, genera la constante matricial {1; 2; 3; 4; 5; 6; 7}.

EXTRAE devuelve cada uno de los caracteres 1o. a 7o. La constante matricial cambia a: {"A"; "n"; "t"; "o"; "n"; "i"; "o;"}.

Se compara cada uno con B2, "o". Si son iguales, se genera un VERDADERO. Si no son iguales, se genera un FALSO: {FALSO; FALSO; FALSO; VERDADERO; FALSO; FALSO; VERDADERO}.

Al agregar -- Excel convierte los VERDADEROS en unos, y los FALSOS en ceros: {0; 0; 0; 1; 0; 0; 1}.

Finalmente se suman estos unos y ceros, resultando 2.

1 comentario:

  1. Se me ocurreo otra forma muy curiosa.

    =LARGO(A2)-LARGO(SUSTITUIR(A2;B2;""))

    Fdo: cdelarosam@gmail.com

    Saludos

    ResponderEliminar

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Excel, Excel 2003, Excel 2007 y el logo XL son marcas registradas de Microsoft Corporation.