Excel dynamiczny zakres nazwany: jak tworzyć i używać

  • Udostępnij To
Michael Brown

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:

    1. 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.
    2. 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.
    3. 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!

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.