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

    ResponderBorrar

Sin Captcha. Sin verificación de imagenes.

Quiénes leen regularmente este blog

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