Spis treści
W tym tutorialu dowiesz się, jak stworzyć dynamiczny zakres nazwany w Excelu i jak używać go w formułach, aby nowe dane były automatycznie uwzględniane w obliczeniach.
W ubiegłotygodniowym tutorialu przyjrzeliśmy się różnym sposobom definiowania statycznie nazwanego zakresu w Excelu. Statyczna nazwa zawsze odnosi się do tych samych komórek, co oznacza, że musiałbyś ręcznie aktualizować odwołanie do zakresu za każdym razem, gdy dodasz nowe lub usuniesz istniejące dane.
Jeśli pracujesz z ciągle zmieniającym się zbiorem danych, możesz chcieć uczynić swój nazwany zakres dynamicznym, tak aby automatycznie rozszerzał się, aby pomieścić nowo dodane wpisy lub kurczył się, aby wykluczyć usunięte dane. W dalszej części tego poradnika znajdziesz szczegółowe wskazówki, jak to zrobić krok po kroku.
Jak utworzyć dynamiczny zakres nazwany w programie Excel
Na początek zbudujmy dynamiczny nazwany zakres składający się z jednej kolumny i zmiennej liczby wierszy. Aby mieć to zrobione, wykonaj następujące kroki:
- Na Formuła zakładka, w Nazwy zdefiniowane grupa, kliknij Określenie nazwy Lub naciśnij Ctrl + F3, aby otworzyć menedżera nazw programu Excel, a następnie kliknij przycisk Nowy... przycisk.
- Tak czy inaczej, Nowa nazwa Zostanie otwarte okno dialogowe, w którym należy określić następujące szczegóły:
- W Nazwa wpisać nazwę dla zakresu dynamicznego.
- W Zakres dropdown, ustawić zakres nazwy. Workbook (domyślnie) jest zalecane w większości przypadków.
- W Dotyczy w polu wpisać formułę OFFSET COUNTA lub INDEX COUNTA.
- Kliknij OK. Gotowe!
Na poniższym zrzucie ekranu definiujemy dynamikę o nazwie zakres pozycje który mieści w sobie wszystkie komórki z danymi w kolumnie A, z wyjątkiem wiersza nagłówkowego:
Formuła OFFSET do definiowania dynamicznego zakresu nazwanego w programie Excel
Ogólna formuła tworzenia dynamicznego zakresu nazwanego w programie Excel jest następująca:
OFFSET( pierwsze_komórka , 0, 0, COUNTA( kolumna ), 1)Gdzie:
- pierwsze_komórka - pierwszy element, który ma być włączony do nazwanego zakresu, na przykład $A$2.
- kolumna - bezwzględne odwołanie do kolumny jak $A:$A.
Wewnątrz tej formuły używasz funkcji COUNTA, aby uzyskać liczbę niepustych komórek w interesującej Cię kolumnie. Ta liczba trafia bezpośrednio do funkcji wysokość argument funkcji OFFSET(reference, rows, cols, [height], [width]) mówiący o tym ile wierszy ma zwrócić.
Poza tym jest to zwykła formuła Offset, gdzie:
- odnośnik jest punktem wyjścia, od którego opierasz przesunięcie (pierwsza_komórka).
- wiersze oraz kol. wynoszą 0, ponieważ nie ma żadnych kolumn ani wierszy do przesunięcia.
- szerokość jest równa 1 kolumnie.
Na przykład, aby zbudować dynamiczny zakres nazwany dla kolumny A w Arkuszu3, rozpoczynający się w komórce A2, używamy tej formuły:
=OFFSET(Sheet3!$A$2, 0, 0, COUNTA(Sheet3!$A:$A), 1)
Uwaga. Jeśli definiujesz zakres dynamiczny w bieżącym arkuszu, nie musisz umieszczać nazwy arkusza w odwołaniach, Excel zrobi to za Ciebie automatycznie. Jeśli budujesz zakres dla jakiegoś innego arkusza, poprzedzaj odwołanie do komórki lub zakresu nazwą arkusza, po której następuje wykrzyknik (jak w powyższym przykładzie formuły).
Formuła INDEX do tworzenia dynamicznego zakresu nazwanego w Excelu
Innym sposobem na stworzenie dynamicznego zakresu Excela jest użycie COUNTA w połączeniu z funkcją INDEX.
pierwsze_komórka :INDEX( kolumna ,COUNTA( kolumna ))Formuła ta składa się z dwóch części:
- Po lewej stronie operatora zakresu (:), umieszczasz twardo zakodowaną referencję początkową, taką jak $A$2.
- Po prawej stronie używasz funkcji INDEX(array, row_num, [column_num]), aby dowiedzieć się o kończącym się odwołaniu. Tutaj dostarczasz całą kolumnę A dla tablicy i używasz COUNTA, aby uzyskać numer wiersza (tj. liczbę komórek niewchodzących w kolumnę A).
Dla naszego przykładowego zestawu danych (proszę zobaczyć zrzut ekranu powyżej), formuła przebiega w następujący sposób:
=$A$2:INDEX($A:$A, COUNTA($A:$A))
Ponieważ w kolumnie A znajduje się 5 niepustych komórek, w tym nagłówek kolumny, COUNTA zwraca 5. W konsekwencji INDEX zwraca $A$5, czyli ostatnią użytą komórkę w kolumnie A (zwykle formuła Index zwraca wartość, ale operator referencji zmusza ją do zwrócenia referencji). A ponieważ jako punkt wyjścia ustawiliśmy $A$2, ostatecznym wynikiem formuły jest zakres $A$2:$A$5.
Aby przetestować nowo utworzony zakres dynamiczny, możesz zlecić COUNTA pobranie liczby elementów:
=COUNTA(Items)
Jeśli wszystko zostanie wykonane poprawnie, wynik formuły będzie się zmieniał po dodaniu lub usunięciu elementów do/z listy:
Uwaga. Obie formuły omówione powyżej dają ten sam wynik, jednak istnieje różnica w wydajności, o której należy pamiętać. OFFSET jest funkcją zmienną, która oblicza się ponownie przy każdej zmianie w arkuszu. Na nowoczesnych maszynach o dużej mocy i rozsądnej wielkości zbiorów danych nie powinno to stanowić problemu. Na maszynach o małej mocy i dużych zbiorach danych może to spowolnić działanie Excela. W takim przypadku należylepiej użyć formuły INDEX, aby stworzyć dynamiczny nazwany zakres.
Jak zrobić dwuwymiarowy zakres dynamiczny w Excelu
Aby zbudować dwuwymiarowy zakres nazwany, w którym nie tylko liczba wierszy, ale i liczba kolumn jest dynamiczna, należy zastosować następującą modyfikację formuły INDEX COUNTA:
pierwsze_komórka :INDEX($1:$1048576, COUNTA( pierwsza_kolumna ), COUNTA( pierwszy_rzęd )))W tej formule masz dwie funkcje COUNTA, aby uzyskać ostatni niepusty wiersz i ostatnią niepustą kolumnę ( suma wierszy oraz kolumna_num odpowiednio argumenty funkcji INDEX). W macierz argument, podajesz cały arkusz (1048576 wierszy w Excelu 2016 - 2007; 65535 wierszy w Excelu 2003 i niższych).
A teraz zdefiniujmy jeszcze jeden zakres dynamiczny dla naszego zestawu danych: zakres o nazwie sprzedaż który zawiera dane dotyczące sprzedaży z 3 miesięcy (od stycznia do marca) i dostosowuje się automatycznie po dodaniu nowych pozycji (wierszy) lub miesięcy (kolumn) do tabeli.
Przy danych o sprzedaży rozpoczynających się w kolumnie B, wiersz 2, formuła przyjmuje następujący kształt:
=$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))
Aby upewnić się, że twój zakres dynamiczny działa tak, jak powinien, wprowadź poniższe formuły gdzieś na arkuszu:
=SUMA(sprzedaż)
=SUM(B2:D5)
Jak widać na poniższym zrzucie ekranu, obie formuły zwracają tę samą sumę. Różnica ujawnia się w momencie dodawania nowych wpisów do tabeli: pierwsza formuła (z dynamicznie nazwanym zakresem) będzie aktualizowana automatycznie, podczas gdy druga będzie musiała być aktualizowana ręcznie przy każdej zmianie. To ogromna różnica, prawda?
Jak używać dynamicznych zakresów nazwanych w formułach Excela
W poprzednich częściach tego samouczka widziałeś już kilka prostych formuł, które wykorzystują dynamiczne zakresy. Teraz spróbujmy wymyślić coś bardziej znaczącego, co pokazuje prawdziwą wartość dynamicznego zakresu nazwanego w Excelu.
Dla tego przykładu weźmiemy klasyczną formułę INDEX MATCH, która wykonuje Vlookup w Excelu:
INDEKS ( zakres , MATCH ( lookup_value , lookup_range , 0))...i zobacz, jak możemy uczynić formułę jeszcze potężniejszą dzięki zastosowaniu dynamicznych zakresów nazwanych.
Jak pokazano na powyższym zrzucie ekranu, próbujemy zbudować pulpit nawigacyjny, w którym użytkownik wprowadza nazwę przedmiotu w H1 i otrzymuje całkowitą sprzedaż dla tego przedmiotu w H2. Nasza przykładowa tabela stworzona w celach demonstracyjnych zawiera tylko 4 pozycje, ale w twoich rzeczywistych arkuszach mogą być setki, a nawet tysiące wierszy. Ponadto, nowe pozycje mogą być dodawane codziennie, więc używanie referencji nie jestopcja, bo trzeba by w kółko aktualizować formułę, a na to jestem zbyt leniwy :)
Aby wymusić automatyczne rozszerzanie formuły, zdefiniujemy 3 nazwy: 2 zakresy dynamiczne, oraz 1 statyczną nazwaną komórkę:
Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))
Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))
Lookup_value: =$H$1
Uwaga. Excel doda nazwę bieżącego arkusza do wszystkich odniesień, więc przed utworzeniem nazw upewnij się, że otworzysz arkusz z danymi źródłowymi.
Teraz zacznij wpisywać formułę w H1. Gdy dojdzie do pierwszego argumentu, wpisz kilka znaków nazwy, której chcesz użyć, a Excel pokaże wszystkie dostępne pasujące nazwy. Kliknij dwukrotnie odpowiednią nazwę, a Excel od razu wstawi ją do formuły:
Uzupełniona formuła wygląda następująco:
=INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))
I działa doskonale!
Gdy tylko dodasz nowe rekordy do tabeli, zostaną one uwzględnione w obliczeniach od razu, bez konieczności wprowadzania jakichkolwiek zmian w formule! A jeśli kiedykolwiek będziesz potrzebował przenieść formułę do innego pliku Excela, po prostu utwórz te same nazwy w docelowym skoroszycie, skopiuj/wklej formułę i uzyskaj jej natychmiastowe działanie.
Wskazówka Oprócz zwiększenia trwałości formuł, zakresy dynamiczne przydają się do tworzenia dynamicznych list rozwijanych.
Tak właśnie tworzy się i wykorzystuje dynamiczne zakresy nazwane w Excelu. Aby przyjrzeć się bliżej formułom omawianym w tym tutorialu, zapraszamy do pobrania naszego przykładowego skoroszytu Excel Dynamic Named Range. Dziękuję za lekturę i mam nadzieję, że zobaczymy się na naszym blogu w przyszłym tygodniu!