Mam arkusz Excela z wartościami tekstowymi, np. W A1: „To jest tekst”. Muszę znaleźć pozycję ostatniego znaku spacji. Czy istnieje formuła programu Excel, która da mi oczekiwany wynik? Próbowałem ZNAJDŹ i WYSZUKAJ, jednak te zaczynają się od lewej, potrzebuję zacząć od prawej.
17
Odpowiedzi:
Jeśli przez pustą wartość rozumiesz „spację”, a przez XLS masz na myśli Excel, możesz użyć tej formuły (zakładając, że test, w którym chcesz znaleźć ostatnią spację, znajduje się
A1
):Możesz podzielić go na 3 części:
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
daje liczbę spacji, nazwijmy tox
,SUBSTITUTE(A1," ","☃",[x])
zastąpi tęx
spację (czyli ostatnią) bałwanem,FIND("☃",[...])
da ci pozycję bałwana. To jest pozycja ostatniej przestrzeni.źródło
Oto inny sposób: dowolne postacie są dozwolone w A1 (nawet bałwany!)
=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))
FIND
ma trzeci argument, który określa pozycję początkową wyszukiwania, jeśli zastosujesz tablicę wartości całkowitych od 1 do n (gdzie n jest długością A1) do tego parametru, otrzymasz tablicę z powrotem, a ostatnia liczba jest pozycją ostatnia przestrzeń.LOOKUP
następnie wyodrębnia tę liczbę, szukając wartości większej niż dowolna wartość, która może być znaleziona w tej tablicy, w którym to przypadku znaleziono ostatnią liczbęW
Excel 2010
lub później możesz również użyćAGGREGATE
takiej funkcji=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)
FIND
zwraca tę samą tablicę jak poprzednio i używając 14 jako pierwszego argumentuAGGREGATE
i 1 jako ostatni, otrzymujesz największą wartość w tablicy, ignorując błędy [6]źródło
"1:"&LEN(A1)
zamienia się w „1:12” - to ciąg, którego ROW nie może przetworzyć, ale INDIRECT konwertuje ciąg na prawidłowe odwołanie, które ROW może obsłużyć, więc ROW (1:12) daje wtedy {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}barry larry houdini
FIND zwróci tę tablicę,{6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
a LOOKUP i / lub AGGREGATE wezmą z niej ostatnią / największą wartość liczbową, tj. 12