나는 파티에 조금 늦었지만 이것이 도움이 될 수 있습니다. 질문의 링크는 비슷한 공식을 가지고 있지만 내 오류를 제거하기 위해 IF () 문을 사용합니다.
Ctrl + Shift + Enter를 두려워하지 않으면 배열 수식을 사용하면 좋습니다.
문자열 (A1 셀) : "one.two.three.four"
공식:
{=MAX(IF(MID(A1,ROW($1:$99),1)=".",ROW($1:$99)))} use Ctrl+Shift+Enter
결과 : 14
먼저,
ROW($1:$99)
1에서 99까지의 정수 배열을 반환합니다 {1,2,3,4,...,98,99}
.
다음,
MID(A1,ROW($1:$99),1)
대상 문자열에서 찾은 1- 길이 문자열의 배열을 반환 한 다음 대상 문자열의 길이에 도달 한 후 빈 문자열을 반환합니다. {"o","n","e",".",..."u","r","","",""...}
다음,
IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99))
배열의 각 항목을 문자열 "."과 비교합니다. 문자열의 문자 색인 또는 FALSE를 반환합니다.{FALSE,FALSE,FALSE,4,FALSE,FALSE,FALSE,8,FALSE,FALSE,FALSE,FALSE,FALSE,14,FALSE,FALSE.....}
마지막,
=MAX(IF(MID(I16,ROW($1:$99),1)=".",ROW($1:$99)))
배열의 최대 값을 반환합니다. 14
이 공식의 장점은 짧고 이해하기 쉽고 고유 한 문자가 필요하지 않다는 것입니다.
단점은 Ctrl + Shift + Enter를 사용해야하며 문자열 길이에 대한 제한입니다. 아래에 표시된 변형으로이 문제를 해결할 수 있지만 해당 변형은 일시적 (읽기 : 느림) 함수 인 OFFSET () 함수를 사용합니다.
이 공식의 속도가 다른 것에 비해 확실하지 않습니다.
변형 :
=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!