Czy ktoś zna formułę znajdującą wartość ostatniej niepustej komórki w kolumnie, w programie Microsoft Excel?
excel
worksheet-function
Michael S.
źródło
źródło
Odpowiedzi:
Działa to zarówno z tekstem, jak i liczbami i nie ma znaczenia, czy są puste komórki, tj. Zwróci ostatnią niepustą komórkę.
Musi być wpisany w tablicę , co oznacza, że po wpisaniu lub wklejeniu naciśniesz Ctrl-Shift-Enter . Poniższe dotyczy kolumny A:
źródło
CELL()
LubOFFSET()
), podczas gdy ta z większą liczbą głosów zwraca wartość bez informowania, gdzie ona się znajduje.Korzystanie z prostego wzoru jest znacznie szybsze
W przypadku programu Excel 2003:
Daje następujące korzyści:
Wyjaśnienie:
(A:A<>"")
zwraca tablicę{TRUE,TRUE,..,FALSE,..}
1/(A:A<>"")
modyfikuje tę tablicę na{1,1,..,#DIV/0!,..}
.LOOKUP
oczekuje posortowanej tablicy w porządku rosnącym i biorąc pod uwagę, że jeśliLOOKUP
funkcja nie może znaleźć dokładnego dopasowania, wybiera największą wartość wlookup_range
(w naszym przypadku{1,1,..,#DIV/0!,..}
), która jest mniejsza lub równa wartości (w naszym przypadku2
), formuła znajduje ostatnie1
w tablicy i zwraca odpowiednią wartość zresult_range
(trzeci parametr -A:A
).Mała uwaga - powyższa formuła nie uwzględnia komórek z błędami (widać to tylko wtedy, gdy ostatnia niepusta komórka zawiera błąd). Jeśli chcesz je wziąć pod uwagę, użyj:
obraz poniżej pokazuje różnicę:
źródło
LOOKUP
mówi, że ostatni argumentresult_vector
jest opcjonalny. Jeśli jednak go pominę, otrzymam bardzo dziwny wynik, którego nie rozumiem.LOOKUP
funkcja nie może znaleźć elementulookup_value
, funkcja dopasowuje największą wartość,lookup_vector
która jest mniejsza lub równalookup_value.
”. Jeśli użyję=LOOKUP(2,A:A<>"",A:A)
bez generowania#DIV/0!
błędu przez1/...
, wygląda na to, że zwraca pewną wartość w środku wektor. Nie znalazłem dokładnej funkcjonalności w tym przypadku.=LOOKUP(2,1/(A:A<>""),ROW(A:A))
ale dodanieROW
funkcji doda efekt "zmienności" - formuła zostanie przeliczona za każdym razem, gdy zmieniona zostanie dowolna komórka w arkuszuOto inna opcja:
=OFFSET($A$1;COUNTA(A:A)-1;0)
źródło
COUNTA
zamiastCOUNT
). Nie wspominając o pustych komórkach.Zainspirowany wspaniałą wskazówką udzieloną przez odpowiedź Douga Glancy'ego, wymyśliłem sposób na zrobienie tego samego bez potrzeby stosowania formuły tablicowej. Nie pytaj mnie dlaczego, ale staram się unikać stosowania formuł tablicowych, jeśli to w ogóle możliwe (nie z żadnego konkretnego powodu, to tylko mój styl).
Oto ona:
Aby znaleźć ostatni niepusty wiersz przy użyciu kolumny A jako kolumny odniesienia
Aby znaleźć ostatnią niepustą kolumnę, używając wiersza 1 jako wiersza odniesienia
Może to być dalej wykorzystane w połączeniu z funkcją indeksu, aby efektywnie definiować dynamiczne nazwane zakresy, ale jest to temat na inny post, ponieważ nie jest to związane z bezpośrednim pytaniem, o którym tutaj mowa.
Przetestowałem powyższe metody w programie Excel 2010, zarówno „natywnie”, jak iw „Trybie zgodności” (dla starszych wersji programu Excel) i działają. Ponownie, dzięki tym nie musisz wykonywać żadnej z kombinacji Ctrl + Shift + Enter. Wykorzystując sposób, w jaki sumproduct działa w programie Excel, możemy ogarnąć potrzebę wykonywania operacji tablicowych, ale robimy to bez formuły tablicowej. Mam nadzieję, że ktoś może docenić piękno, prostotę i elegancję proponowanych rozwiązań sumarycznych tak samo jak ja. Nie zaświadczam jednak o wydajności pamięci powyższych rozwiązań. Wystarczy, że są proste, pięknie wyglądają, pomagają w zamierzonym celu i są na tyle elastyczne, że można je rozszerzyć na inne cele :)
Mam nadzieję że to pomoże!
Wszystkiego najlepszego!
źródło
Wiem, że to stare pytanie, ale nie jestem zadowolony z udzielonych odpowiedzi.
WYSZUKAJ, WYSZUKAJ.PIONOWO i WYSZUKAJ.PIONOWO mają problemy z wydajnością i nigdy nie powinny być używane.
Funkcje tablicowe wiążą się z dużym obciążeniem i mogą mieć również problemy z wydajnością, dlatego należy ich używać tylko w ostateczności.
COUNT i COUNTA napotykają problemy, jeśli dane nie są ciągłe niepuste, tj. Masz spacje, a następnie dane ponownie w przedmiotowym zakresie
POŚREDNI jest niestabilny, więc powinien być używany tylko w ostateczności
OFFSET jest niestabilny, więc powinien być używany tylko w ostateczności
wszelkie odniesienia do ostatniego możliwego wiersza lub kolumny (na przykład 65536-ty wiersz w programie Excel 2003) nie są solidne i powodują dodatkowe obciążenie
To jest to, czego używam
gdy typ danych jest mieszany:
=max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))
gdy wiadomo, że dane zawierają tylko liczby:
=MATCH(1E+306,[RANGE],1)
gdy wiadomo, że dane zawierają tylko tekst:
=MATCH("*",[RANGE],-1)
MATCH ma najniższy narzut i jest nieulotny, więc jeśli pracujesz z dużą ilością danych, jest to najlepsze rozwiązanie.
źródło
TRUE
/FALSE
), pozostaną niewykryte. Pomimo tego, że ta odpowiedź nie jest kuloodporna, nadal uważam, że ta odpowiedź ma najmniejszy wpływ na wydajność.=INDEX(N:N,MATCH(1E+306,N:N,1))
Działa to w programie Excel 2003 (i później z niewielkimi zmianami, patrz poniżej). Naciśnij Ctrl + Shift + Enter (nie tylko Enter), aby wprowadzić to jako formułę tablicową.
Należy pamiętać, że program Excel 2003 nie może zastosować formuły tablicowej do całej kolumny. Takie postępowanie przynosi rezultaty
#NUM!
; mogą wystąpić nieprzewidywalne skutki! (EDIT : Sprzeczne informacje z firmy Microsoft: ten sam maj lub nie mogą być prawdziwe w programie Excel 2007, problemem może zostały ustalone w 2010 roku )Dlatego stosuję formułę tablicową do zakresu
A1:A65535
i traktuję w specjalny sposób ostatnią komórkę, która jestA65536
w programie Excel 2003. Nie mogę po prostu powiedzieć,A:A
ani nawet,A1:A65536
gdy ta ostatnia automatycznie powraca doA:A
.Jeśli masz absolutną pewność, że
A65536
jest puste, możesz pominąć tęIF
część:Zwróć uwagę, że jeśli używasz programu Excel 2007 lub 2010, ostatni numer wiersza to 1048576, a nie 65536, więc dostosuj powyższe odpowiednio.
Jeśli nie ma puste komórki w środku swoich danych, to bym po prostu użyć prostszej formuły
=INDEX(A:A,COUNTA(A:A))
.źródło
=INDEX(19:19,COUNTA(19:19))
Alternatywnym rozwiązaniem bez formuł tablicowych, prawdopodobnie bardziej niezawodnym niż to z poprzedniej odpowiedzi z rozwiązaniem (wskazówka do a) bez formuł tablicowych , jest
Zobacz tę odpowiedź jako przykład. Uznanie dla Brada i Barry'ego Houdiniego , którzy pomogli rozwiązać to pytanie .
Możliwe przyczyny preferowania formuły innej niż tablicowa są podane w:
Oficjalna strona firmy Microsoft (poszukaj informacji „Wady używania formuł tablicowych”).
Formuły tablicowe mogą wydawać się magiczne, ale mają też pewne wady:
Array Formuła Herezja .
źródło
A
wystąpieniaD
. Co ja robię źle?jeśli szukasz w kolumnie (A) użyj:
jeśli Twój zakres to A1: A10, możesz użyć:
w tym wzorze:
zwraca ostatni niepusty numer wiersza, a funkcja pośrednia () zwraca wartość komórki.
źródło
=INDEX(A:A, COUNTA(A:A), 1)
zaczerpnięte stądźródło
=MATCH("*";A1:A10;-1)
dla danych tekstowych=MATCH(0;A1:A10;-1)
dla danych liczbowychźródło
Wypróbowałem wszystkie nieulotne wersje, ale żadna z wersji podanych powyżej nie zadziałała. Excel 2003/2007 aktualizacja. Z pewnością można to zrobić w programie Excel 2003. Nie jako tablica ani standardowa formuła. Otrzymuję tylko pusty błąd, 0 lub # wartość. Więc uciekam się do niestabilnych metod. To zadziałało.
@Julian Kroné .. Używając „;” zamiast „,” NIE działa! Myślę, że używasz Libre Office, a nie MS Excel? LOOKUP jest tak irytująco zmienny, że używam go tylko w ostateczności
źródło
Umieść ten kod w module VBA. Zapisać. W obszarze Funkcje, Użytkownik szuka tej funkcji.
źródło
dla danych tekstowych:
dla danych liczbowych:
To daje ci względny indeks ostatniej niepustej komórki w wybranym zakresie (tutaj A1: A10).
Jeśli chcesz uzyskać wartość, uzyskaj do niej dostęp przez POŚREDNIE po zbudowaniu - tekstowo - bezwzględnego odwołania do komórki, np .:
źródło
Ja też miałem ten sam problem. Ta formuła również działa równie dobrze: -
14 to numer pierwszego wiersza w wierszach, które chcesz policzyć.
Przewlekły Clawtooth
źródło
Użyłem HLOOKUP
A1
ma randkę;A2:A8
ma prognozy zrobione w różnym czasie, chcę najnowszeUżywa standardowej formuły hlookup z tablicą przeglądową zdefiniowaną przez liczbę wpisów.
źródło
Jeśli wiesz, że między nimi nie będzie pustych komórek, najszybszym sposobem jest ta.
Po prostu zlicza niepuste komórki i odwołuje się do odpowiedniej komórki.
Może być również używany do określonego zakresu.
Zwraca ostatnią niepustą komórkę z zakresu O4: O34.
źródło
W przypadku pakietu Microsoft Office 2013
„Przedostatni” niepustego wiersza:
„Ostatni” niepusty wiersz:
źródło
Ta formuła działała ze mną w przypadku pakietu Office 2010:
= WYSZUKAJ (2; 1 / (A1: A100 <> ""); A1: A100)
A1: pierwsza komórka A100: odnosi się do ostatniej komórki w porównaniu
źródło
Myślę, że odpowiedź W5ALIVE jest najbliższa temu, czego używam do znalezienia ostatniego wiersza danych w kolumnie. Zakładając, że szukam ostatniego wiersza z danymi w kolumnie A, użyłbym następujących dla bardziej ogólnego wyszukiwania:
Pierwsza PODAJ.POZYCJĘ wyszuka ostatnią komórkę tekstową, a druga PODAJ.POZYCJĘ wyszuka ostatnią komórkę numeryczną. Funkcja JEŻELI.BŁĄD zwraca zero, jeśli pierwsze PODAJ.POZYCJĘ znajdzie wszystkie komórki liczbowe lub jeśli drugie dopasowanie znajdzie wszystkie komórki tekstowe.
Zasadniczo jest to niewielka odmiana rozwiązania mieszanego tekstu i liczb W5ALIVE.
Podczas testowania synchronizacji było to znacznie szybsze niż równoważne warianty LOOKUP.
Aby zwrócić rzeczywistą wartość ostatniej komórki, wolę używać pośrednich odwołań do komórek w następujący sposób:
Metoda oferowana przez sancho.s jest prawdopodobnie czystszą opcją, ale zmodyfikowałbym część, która znajduje numer wiersza, do tego:
jedyną różnicą jest to, że „, 1” zwraca pierwszą wartość, a „, 0” zwraca całą tablicę wartości (wszystkie oprócz jednej nie są potrzebne). Nadal preferuję adresowanie komórki do funkcji indeksu, innymi słowy, zwracanie wartości komórki za pomocą:
Świetny wątek!
źródło
Jeśli nie boisz się używać tablic, oto bardzo prosta formuła rozwiązania problemu:
= SUMA (JEŻELI (A: A <> ""; 1,0))
Musisz nacisnąć klawisze CTRL + SHIFT + ENTER, ponieważ jest to formuła tablicowa.
źródło
Prosty, który mi pasuje:
źródło
OK, więc miałem ten sam problem co pytający i wypróbowałem obie najlepsze odpowiedzi. Ale tylko błędy w formułach. Okazało się, że muszę zamienić "," na ";" aby formuły działały. Używam XL 2007.
Przykład:
lub
źródło
W przypadku śledzenia wersji (dodawanie litery v na początku numeru) uznałem, że ten działa dobrze w Xcelsius (SAP Dashboards)
źródło