Llego un poco tarde a la fiesta, pero tal vez esto pueda ayudar. El enlace en la pregunta tenía una fórmula similar, pero la mía usa la declaración IF () para deshacerse de los errores.
Si no tienes miedo de Ctrl + Shift + Enter, puedes hacerlo bastante bien con una fórmula de matriz.
Cadena (en la celda A1): "one.two.three.four"
Fórmula:
{=MAX(IF(MID(A1,ROW($1:$99),1)=".",ROW($1:$99)))} use Ctrl+Shift+Enter
Resultado: 14
Primero,
ROW($1:$99)
devuelve una matriz de enteros de 1 a 99: {1,2,3,4,...,98,99}
.
Próximo,
MID(A1,ROW($1:$99),1)
devuelve una matriz de cadenas de 1 longitud encontradas en la cadena de destino, luego devuelve cadenas en blanco después de alcanzar la longitud de la cadena de destino: {"o","n","e",".",..."u","r","","",""...}
Próximo,
IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99))
compara cada elemento de la matriz con la cadena "." y devuelve el índice del carácter en la cadena o FALSO:{FALSE,FALSE,FALSE,4,FALSE,FALSE,FALSE,8,FALSE,FALSE,FALSE,FALSE,FALSE,14,FALSE,FALSE.....}
Último,
=MAX(IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99)))
devuelve el valor máximo de la matriz: 14
La ventaja de esta fórmula es que es corta, relativamente fácil de entender y no requiere caracteres únicos.
Las desventajas son el uso requerido de Ctrl + Shift + Enter y la limitación en la longitud de la cadena. Esto se puede solucionar con una variación que se muestra a continuación, pero esa variación utiliza la función OFFSET (), que es una función volátil (lectura: lenta).
No estoy seguro de cuál es la velocidad de esta fórmula frente a otras.
Variaciones:
=MAX((MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)=".")*ROW(OFFSET($A$1,,,LEN(A1)))) works the same way, but you don't have to worry about the length of the string
=SMALL(IF(MID(A1,ROW($1:$99),1)=".",ROW($1:$99)),2) determines the 2nd occurrence of the match
=LARGE(IF(MID(A1,ROW($1:$99),1)=".",ROW($1:$99)),2) determines the 2nd-to-last occurrence of the match
=MAX(IF(MID(I16,ROW($1:$99),2)=".t",ROW($1:$99))) matches a 2-character string **Make sure you change the last argument of the MID() function to the number of characters in the string you wish to match!