Czyli dynamiczna nazwa
Chciałabym zawsze wiedzieć, jaka jest ostatnia transakcja na mojej liście. Konkretnie interesuje mnie jej numer i wartość (chcę je widzieć nad zakresem, w żółtych komórkach). Zestaw danych mam w zwykłym zakresie, o taki:
Ma to działać tak, że jak dopiszę dane do tego zakresu – to właśnie te dopisane, czyli ostatnie, mają się pojawić w żółtych komórkach. Dokonam tego za pomocą nazewnictwa. Najpierw pokażę jak to zrobić dla konkretnego arkusza, w którym jesteśmy (i tylko dla niego!), a potem – jak to zrobić do każdego, niezależnie jak się nazywa (jeśli układ arkusza jest analogiczny).
Ostatnia komórka w konkretnym arkuszu
W pliku mamy 2 zestawienia danych o identycznej strukturze (jak na obrazku powyżej). Każde z nich znajduje się w innym arkuszu: Kwiecień i Maj. Chciałabym móc w szybki sposób mieć dostępną informację o ostatnim numerze transakcji w arkuszu Kwiecień. Niezależnie od tego, w jakim arkuszu jestem.
W tym celu stworzę sobie nazwę, a konkretnie nazwaną formułę, która wskaże mi tę właśnie wartość (id ostatniej transakcji w kwietniu).
Aby ułatwić sobie życie – wpiszę formułę do żółtej komórki E2, a potem skopiuję ją gdy będę tworzyła nazwę.
Formuła jest następująca:
=INDEKS($B:$B;4+ILE.NIEPUSTYCH($B:$B))
Zadziała ona w aktywnym arkuszu i zakłada, że wszystkie dane w kolumnie ID transakcji w naszym zakresie danych są uzupełnione. Funkcja INDEKS wyświetli wartość z odpowiedniego wiersza kolumny B. Funkcja ILE.NIEPUSTYCH policzy ile jest w tej kolumnie zapełnionych komórek. Dodaję do niej 4, ponieważ nad zakresem danych w mojej formatce są 4 puste wiersze. Suma obu da nam numer ostatniego wiersza w kolumnie – tego, który chcemy wyświetlić. Tutaj pojawia się bardzo ważna kwestia – kolumna zakresu danych, w której liczymy niepuste komórki musi być cała wypełniona. Jeśli nie jesteś tego pewna(y) – wskaż taką kolumnę w zakresie, która na pewno uzupełniona będzie (zazwyczaj kolumny z id takie właśnie są).
I na tym etapie taka formuła wystarczy. Jak za chwilę będziemy kopiować ją do okienka nazwy – nazwa aktywnego arkusza sama wskoczy do formuły.
W takim razie stwórzmy sobie nazwę.
- Wywołaj okienko tworzenia nazw Formuły/Menedżer nazw/Nowy i uzupełnij pola Nazwa (jak uważasz, u mnie to OstTransakcjaKwi) i Odwołuje się do (wklej napisaną przed chwilą formułę):
- Zatwierdź OK
- Zauważ, że po zatwierdzeniu nazwy, Excel dorzucił sobie nazwę aktywnego arkusza do odwołań do kolumny:
- Zamknij okienko.
Teraz, kiedy w żółtej komórce (czy jakiejkolwiek innej w dowolnym arkuszu) wpiszesz odwołanie do tej nazwy – otrzymasz wynik 422, gdyż jest to id ostatniej transakcji na liście. Jeśli zaś dopiszesz do tego zakresu dane – formuła się przeliczy i zwróci nowy wynik.
Dla wartości ostatniej transakcji formuła będzie analogiczna, tylko odwołująca się do kolumny F:
=INDEKS(Kwiecień!$F:$F;4+ILE.NIEPUSTYCH(Kwiecień!$F:$F))
Obie nazwy będą działać w całym pliku, niezależnie w którym arkuszu ich użyjesz.
Ostatnia komórka w aktywnym arkuszu
Teraz przyjrzyjmy się sytuacji, kiedy zależy nam, aby wyświetlić id ostatniej transakcji, ale w odniesieniu do dowolnego arkusza. Czyli jeśli stoimy w arkuszu Kwiecień – to do kwietniowej transakcji, a jeśli w arkuszu Maj – do majowej. Chodzi po prostu o to, aby nie tworzyć kilku nazw, tylko jedną, działającą w zależności od kontekstu, w jakim występuje.
Brzmi strasznie trudno, ale w rzeczywistości trzeba tylko troszkę zmodyfikować napisane przez nas wcześniej formuły. Mianowicie usunąć z nich nazwy arkusza. Powtórzę: nazwy arkusza. I tylko. Wykrzyknik zostawić. Taki zapis w nazewnictwie oznacza, że odwołujemy się do aktywnego arkusza, czyli takiego, w jakim nazwa została wywołana, a o to właśnie nam chodzi.
Czyli formuła dla id transakcji będzie następująca:
=INDEKS(!$B:$B;4+ILE.NIEPUSTYCH(!$B:$B))
W okienku tworzenia nazwy wygląda to tak:
To dopiero ciekawy zapis! Popróbuj – polecam! No właśnie. Bo to już cały magic trick 🙂
Powiązane produkty
- Webinar: Nazwy w Excelu – wstęp
A tutaj plik z gotowcem do pobrania:
MalinowyExcel Nazwa ostatniej komórki dw.xlsx
I wersja wideo:
Super wpis. Właśnie takie rozwiązania szukałem. Dziękuję 😉
Sławek, super! Bardzo się cieszę!
Malina, a jak zmodyfikować formułę by zadziałała w kolumnie w której nie wszystkie dane są uzupełnione (ewentualnie niektóre komórki są scalone i mają jedną wartość) ?
Hej,
na scalone komórki to niestety nie ma mocnych – trzeba je rozcalić i wpisać wartość w każdą komórkę osobno (scalone komórki to zło! ;)). Jak to już będzie – to będzie ideał i nawet nie trzeba będzie modyfikować formuły (jeśli scalone są jedynymi „pustymi” komórkami). Jeśli jednak są puste, a nam nadal zależy, aby podać ostatnią komórkę w dynamicznym zakresie – można to zrobić tak: =WYSZUKAJ(9999999999;F6:INDEKS(F:F;4+ILE.NIEPUSTYCH(B:B))). Tez oczywiście można podpiąć pod nazwę, jeśli formuła ma być względnie schowana przed użytkownikiem 🙂
Dzięki serdeczne. Poszedłem za Twoją radą i rozcaliłem. Będę się starał pamiętać że scalone komórki to zło.
Pozdrawiam
Super! Zdecydowanie scalone komórki to zło 🙂
Przydało się. Dzięki!
Cieszę się 🙂
Mam bardzo długą kolumnę. Wiem jak ją całą zaznaczyć czyli używam CTRL + SHIFT + STRZAŁKA by zaznaczyć naraz całą kolumnę. Ja jednak potrzebuję ID komórki czyli np. B225626. By następnie z tej wartości wyekstrahować do dalszych obliczeń liczbę 225626. Jak mam to zrobić?
Za pomoc z góry dziękuję
Cieszę się że znalazłem tę stronę. Malina masz dar przyjaznego i skrótowego przekazywania z pozoru skomplikowanych treści. Pomogla mi odpowiedź dla danka z dnia 8 stycznia 2020 at 12:41 do arkuszy Google. Dziękuję
Bardzo mi miło to słyszeć, dziękuję! Cieszę się, że znalazłeś rozwiązanie dla siebie. Zapraszam ponownie :):):)
Czy da się to zrobić analogicznie dla ostatniej komórki w wierszu? Wprowadzam dane mając w 1 kolumnie listę użytkowników, a potem w każdej kolejnej kolumnie kolejny dzień miesiąca. Zależy mi na tym, by ustalić, w którym dniu miesiąca został wprowadzony ostatni rekord (nie wszystkie komórki uzupełniam, ale mogę uzupełnić „0” i wtedy zrobić wartość większą niż „0”. Szukam jakiej formuły użyć, ale nic nie pasuje 🙂