Je suis un peu en retard à la fête, mais peut-être que cela pourrait aider. Le lien dans la question avait une formule similaire, mais la mienne utilise l'instruction IF () pour se débarrasser des erreurs.
Si vous n'avez pas peur de Ctrl + Maj + Entrée, vous pouvez très bien faire avec une formule matricielle.
Chaîne (dans la cellule A1): "one.two.three.four"
Formule:
{=MAX(IF(MID(A1,ROW($1:$99),1)=".",ROW($1:$99)))} use Ctrl+Shift+Enter
Résultat: 14
Première,
ROW($1:$99)
renvoie un tableau d'entiers de 1 à 99: {1,2,3,4,...,98,99}
.
Prochain,
MID(A1,ROW($1:$99),1)
renvoie un tableau de chaînes de 1 longueur trouvées dans la chaîne cible, puis renvoie des chaînes vides une fois que la longueur de la chaîne cible est atteinte: {"o","n","e",".",..."u","r","","",""...}
Prochain,
IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99))
compare chaque élément du tableau à la chaîne "." et renvoie soit l'index du caractère dans la chaîne, soit FALSE:{FALSE,FALSE,FALSE,4,FALSE,FALSE,FALSE,8,FALSE,FALSE,FALSE,FALSE,FALSE,14,FALSE,FALSE.....}
Dernier,
=MAX(IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99)))
renvoie la valeur maximale du tableau: 14
Les avantages de cette formule sont qu'elle est courte, relativement facile à comprendre et ne nécessite aucun caractère unique.
Les inconvénients sont l'utilisation requise de Ctrl + Maj + Entrée et la limitation de la longueur de la chaîne. Cela peut être contourné avec une variation illustrée ci-dessous, mais cette variation utilise la fonction OFFSET () qui est une fonction volatile (lecture: lente).
Je ne sais pas quelle est la vitesse de cette formule par rapport aux autres.
Variations:
=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!