Partiye biraz geç kaldım, ama belki bu yardımcı olabilir. Sorudaki bağlantı benzer bir formüle sahipti, ancak benimki hatalardan kurtulmak için IF () deyimini kullanıyor.
Ctrl + Shift + Enter'dan korkmuyorsanız, bir dizi formülü ile oldukça iyi yapabilirsiniz.
Dize (A1 hücresinde): "one.two.three.four"
Formül:
{=MAX(IF(MID(A1,ROW($1:$99),1)=".",ROW($1:$99)))} use Ctrl+Shift+Enter
Sonuç: 14
İlk,
ROW($1:$99)
1 ile 99 arasında bir tamsayı dizisi döndürür: {1,2,3,4,...,98,99}
.
Sonraki,
MID(A1,ROW($1:$99),1)
hedef dizede bulunan 1 uzunlukta dizelerden oluşan bir dizi döndürür, ardından hedef dizenin uzunluğuna ulaşıldıktan sonra boş dizeler döndürür: {"o","n","e",".",..."u","r","","",""...}
Sonraki,
IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99))
dizideki her öğeyi "." dizesiyle karşılaştırır. ve dizedeki karakterin dizinini veya FALSE değerini döndürür:{FALSE,FALSE,FALSE,4,FALSE,FALSE,FALSE,8,FALSE,FALSE,FALSE,FALSE,FALSE,14,FALSE,FALSE.....}
Son,
=MAX(IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99)))
dizinin maksimum değerini döndürür: 14
Bu formülün avantajları kısa, anlaşılması kolay ve benzersiz karakterler gerektirmemesidir.
Dezavantajlar Ctrl + Shift + Enter'ın gerekli kullanımı ve dize uzunluğundaki sınırlamadır. Bu, aşağıda gösterilen bir varyasyon ile çözülebilir, ancak bu varyasyon geçici (okuma: yavaş) işlevi olan OFFSET () işlevini kullanır.
Bu formülün diğerlerine kıyasla hızının ne olduğundan emin değilim.
Varyasyonlar:
=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!