Spis treści
W tym tutorialu zamierzamy rzucić nieco światła na jednego z najbardziej tajemniczych mieszkańców wszechświata Excela - funkcję OFFSET.
Czym zatem jest OFFSET w Excelu? W dużym skrócie formuła OFFSET zwraca odwołanie do zakresu, który jest przesunięty względem komórki początkowej lub zakresu komórek o określoną liczbę wierszy i kolumn.
Funkcja OFFSET może być nieco podstępna, więc najpierw przejdźmy do krótkiego wyjaśnienia technicznego (zrobię wszystko, co w mojej mocy, aby zachować prostotę), a następnie obejmiemy kilka najbardziej skutecznych sposobów korzystania z OFFSET w programie Excel.
Funkcja OFFSET w Excelu - składnia i podstawowe zastosowania
Funkcja OFFSET w Excelu zwraca komórkę lub zakres komórek, które znajdują się o daną liczbę wierszy i kolumn od danej komórki lub zakresu.
Składnia funkcji OFFSET jest następująca:
OFFSET(reference, rows, cols, [height], [width])Pierwsze 3 argumenty są wymagane, a ostatnie 2 są opcjonalne. Wszystkie argumenty mogą być odwołaniami do innych komórek lub wyników zwracanych przez inne formuły.
Wygląda na to, że Microsoft postarał się o nadanie nazwom parametrów jakiegoś znaczenia i dają one wskazówkę, co należy podać w każdym z nich.
Wymagane argumenty:
- Odnośnik - komórkę lub zakres sąsiednich komórek, z których dokonujemy przesunięcia. Można to traktować jako punkt wyjścia.
- Rzędy - Liczba wierszy do przesunięcia od punktu początkowego, w górę lub w dół. Jeśli wiersze są liczbą dodatnią, formuła przesuwa się poniżej odniesienia początkowego, w przypadku liczby ujemnej przesuwa się powyżej odniesienia początkowego.
- Cols - Liczba kolumn, o które formuła ma się przesunąć od punktu początkowego. Podobnie jak wiersze, kola mogą być dodatnie (na prawo od odniesienia początkowego) lub ujemne (na lewo od odniesienia początkowego).
Argumenty opcjonalne:
- Wysokość - liczba wierszy do zwrócenia.
- Szerokość - liczba kolumn do zwrócenia.
Zarówno wysokość jak i szerokość muszą być zawsze liczbami dodatnimi. Jeśli pominięty zostanie któryś z nich, domyślnie przyjmowana jest wysokość lub szerokość z odnośnik .
Uwaga: OFFSET jest funkcją zmienną i może spowolnić działanie arkusza. Powolność jest wprost proporcjonalna do liczby przeliczanych komórek.
A teraz zilustrujmy teorię na przykładzie najprostszej formuły OFFSET.
Przykład formuły OFFSET w programie Excel
Oto przykład prostej formuły OFFSET, która zwraca odwołanie do komórki na podstawie punktu początkowego, wierszy i kol, które określasz:
=OFFSET(A1,3,1)
Formuła ta mówi Excelowi, aby wziął komórkę A1 jako punkt wyjścia (referencję), a następnie przesunął ją o 3 wiersze w dół (argument rows) i o 1 kolumnę w lewo (argument cols). W rezultacie ta formuła OFFSET zwraca wartość w komórce B4.
Obrazek po lewej stronie pokazuje trasę funkcji, a zrzut ekranu po prawej demonstruje, jak można użyć formuły OFFSET na rzeczywistych danych. Jedyną różnicą między dwiema formułami jest to, że druga (po prawej) zawiera odwołanie do komórki (E1) w argumencie rows. Ale ponieważ komórka E1 zawiera liczbę 3, a dokładnie ta sama liczba pojawia się w argumencie rows pierwszej formuły,oba zwróciłyby identyczny wynik - wartość w B4.
Formuły OFFSET w Excelu - rzeczy do zapamiętania
- Funkcja OFFSET w Excelu nie przesuwa w rzeczywistości żadnych komórek ani zakresów, zwraca tylko odniesienie.
- Gdy formuła OFFSET zwraca zakres komórek, argumenty rows i cols zawsze odnoszą się do górnej, lewej komórki w zwracanym przedziale.
- Argument referencji musi zawierać komórkę lub zakres sąsiednich komórek, w przeciwnym razie twoja formuła zwróci błąd #VALUE!
- Jeśli określone wiersze i/lub kolumny przesuną odwołanie poza krawędź arkusza kalkulacyjnego, Twoja formuła Excel OFFSET zwróci błąd #REF!
- Funkcja OFFSET może być używana w ramach każdej innej funkcji Excela, która akceptuje odniesienie do komórki / zakresu w swoich argumentach.
Na przykład, jeśli spróbujesz użyć formuły =OFFSET(A1,3,1,1,3)
samodzielnie, rzuci błąd #VALUE!, ponieważ zakres do zwrócenia (1 wiersz, 3 kolumny) nie mieści się w jednej komórce. Jeśli jednak osadzisz go w funkcji SUM, jak to:
=SUMA(OFFSET(A1,3,1,1,3))
Formuła zwróci sumę wartości w zakresie 1 wiersz na 3 kolumny, który znajduje się 3 wiersze poniżej i 1 kolumnę na prawo od komórki A1, czyli sumę wartości w komórkach B4:D4.
Dlaczego w programie Excel używam opcji OFFSET?
Teraz, gdy wiesz, co robi funkcja OFFSET, możesz zadać sobie pytanie "Po co zawracać sobie głowę używaniem jej?" Dlaczego po prostu nie napisać bezpośredniego odwołania, takiego jak B4:D4?
Formuła OFFSET w Excelu jest bardzo dobra do:
Tworzenie zakresów dynamicznych : Odwołania takie jak B1:C4 są statyczne, co oznacza, że zawsze odnoszą się do danego zakresu. Jednak niektóre zadania łatwiej jest wykonać przy użyciu zakresów dynamicznych. Dzieje się tak zwłaszcza wtedy, gdy pracujesz ze zmieniającymi się danymi, np. masz arkusz, w którym co tydzień dodawany jest nowy wiersz lub kolumna.
Pobieranie zakresu z komórki początkowej Czasami możesz nie znać faktycznego adresu zakresu, ale wiesz, że zaczyna się on od pewnej komórki. W takich scenariuszach użycie OFFSET w Excelu jest właściwym rozwiązaniem.
Jak używać funkcji OFFSET w Excelu - przykłady formuł
Mam nadzieję, że nie znudziła Cię taka ilość teorii. W każdym razie, teraz przechodzimy do najbardziej ekscytującej części - praktycznych zastosowań funkcji OFFSET.
Funkcje Excel OFFSET i SUM
Przykład, który omówiliśmy przed chwilą, demonstruje najprostsze zastosowanie funkcji OFFSET & SUM. Teraz spójrzmy na te funkcje pod innym kątem i zobaczmy, co jeszcze potrafią.
Przykład 1. Dynamiczna formuła SUM / OFFSET
Podczas pracy z ciągle aktualizowanymi arkuszami możesz chcieć mieć formułę SUM, która automatycznie wybiera wszystkie nowo dodane wiersze.
Załóżmy, że masz dane źródłowe podobne do tego, co widać na poniższym zrzucie ekranu. Każdego miesiąca nowy wiersz jest dodawany tuż nad formułą SUM i naturalnie chcesz, aby był on uwzględniony w sumie. W sumie są dwa wyjścia - albo aktualizować zakres w formule SUM za każdym razem ręcznie, albo kazać formule OFFSET zrobić to za Ciebie.
Ponieważ pierwsza komórka zakresu do zsumowania będzie określona bezpośrednio w formule SUM, musisz jedynie zdecydować o parametrach funkcji Excel OFFSET, która uzyska tę ostatnią komórkę zakresu:
Odnośnik
- komórkę zawierającą sumę, w naszym przypadku B9.Rzędy
- komórka tuż nad sumą, która wymaga podania ujemnej liczby -1.Cols
- to 0, ponieważ nie chcesz zmieniać kolumny.
Tak więc, tutaj idzie wzór formuły SUM / OFFSET:
=SUM( pierwsza komórka :(OFFSET( komórka o łącznej , -1,0)Tweaked dla powyższego przykładu, formuła wygląda następująco:
=SUMA(B2:(OFFSET(B9, -1, 0)))
I jak pokazuje poniższy zrzut ekranu, działa bezbłędnie:
Przykład 2. Formuła Excel OFFSET do sumowania ostatnich N wierszy
W powyższym przykładzie załóżmy, że chcesz znać kwotę premii za ostatnie N miesięcy zamiast sumy całkowitej. Chcesz również, aby formuła automatycznie uwzględniała wszystkie nowe wiersze dodawane do arkusza.
Do tego zadania wykorzystamy w Excelu OFFSET w połączeniu z funkcjami SUM i COUNT / COUNTA:
=SUMA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
lub
=SUMA(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
Poniższe szczegóły mogą pomóc w lepszym zrozumieniu formuł:
Odnośnik
- nagłówek kolumny, której wartości chcemy zsumować, w tym przykładzie komórka B1.Rzędy
- aby obliczyć liczbę wierszy do odsunięcia, używasz funkcji COUNT lub COUNTA.COUNT zwraca liczbę komórek w kolumnie B zawierających liczby, od których odejmujemy ostatnie N miesięcy (liczbą jest komórka E1) i dodajemy 1.
Jeśli wybrano funkcję COUNTA, nie trzeba dodawać 1, ponieważ funkcja ta zlicza wszystkie niepuste komórki, a wiersz nagłówkowy z wartością tekstową dodaje dodatkową komórkę, której potrzebuje nasza formuła. Należy pamiętać, że ta formuła będzie działać poprawnie tylko w przypadku podobnej struktury tabeli - jeden wiersz nagłówkowy, po którym następują wiersze z liczbami. W przypadku innych układów tabeli może być konieczne wprowadzenie pewnych zmian wFormuła OFFSET/COUNTA.
Cols
- liczba kolumn do przesunięcia wynosi zero (0).Wysokość
- liczba wierszy do zsumowania jest określona w E1.Szerokość
- 1 kolumna.
Używanie funkcji OFFSET z AVERAGE, MAX, MIN
W taki sam sposób, jak obliczaliśmy premie za ostatnie N miesięcy, można uzyskać średnią z ostatnich N dni, tygodni lub lat, a także znaleźć ich maksymalne lub minimalne wartości. Jedyną różnicą między formułami jest nazwa pierwszej funkcji:
=AVERAGE(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
Kluczową zaletą tych formuł w porównaniu do zwykłych AVERAGE(B5:B8) lub MAX(B5:B8) jest to, że nie będziesz musiał aktualizować formuły za każdym razem, gdy twoja tabela źródłowa zostanie zaktualizowana. Bez względu na to, ile nowych wierszy zostanie dodanych lub usuniętych w twoim arkuszu, formuły OFFSET zawsze będą odnosić się do określonej liczby ostatnich (najniższych) komórek w kolumnie.
Formuła OFFSET w Excelu do tworzenia dynamicznego zakresu
Używana w połączeniu z funkcją COUNTA, funkcja OFFSET może pomóc w tworzeniu dynamicznego zakresu, który może okazać się przydatny w wielu scenariuszach, na przykład do tworzenia automatycznie aktualizowanych list rozwijanych.
Wzór OFFSET dla zakresu dynamicznego jest następujący:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
W sercu tej formuły używasz funkcji COUNTA, aby uzyskać liczbę niepustych komórek w kolumnie docelowej. Ta liczba trafia do argumentu wysokości OFFSET, instruując go, ile wierszy ma zwrócić.
Poza tym jest to zwykła formuła Offset, gdzie:
- Odnośnik to punkt początkowy, od którego opierasz przesunięcie, na przykład Arkusz1!$A$1.
- Rzędy oraz
Cols
są oba 0, ponieważ nie ma żadnych kolumn ani wierszy do przesunięcia. - Szerokość to 1 kolumna.
Uwaga. Jeśli tworzysz zakres dynamiczny w bieżącym arkuszu, nie ma potrzeby dołączania nazwy arkusza w odwołaniach, Excel zrobi to za Ciebie automatycznie podczas tworzenia zakresu nazwanego. W przeciwnym razie pamiętaj, aby dołączyć nazwę arkusza, po której następuje wykrzyknik, jak w tym przykładzie formuły.
Po utworzeniu dynamicznego zakresu nazwanego za pomocą powyższej formuły OFFSET, możesz użyć Walidacji danych, aby stworzyć dynamiczną listę rozwijaną, która będzie się automatycznie aktualizować, gdy tylko dodasz lub usuniesz elementy z listy źródłowej.
Aby uzyskać szczegółowe wskazówki krok po kroku dotyczące tworzenia list rozwijanych w programie Excel, zapoznaj się z poniższymi tutorialami:
- Tworzenie list rozwijanych w Excelu - statycznych, dynamicznych, z innego skoroszytu
- Tworzenie zależnej listy rozwijanej
Excel OFFSET & VLOOKUP
Jak wszyscy wiedzą, proste looki pionowe i poziome są wykonywane odpowiednio za pomocą funkcji VLOOKUP lub HLOOKUP. Jednak te funkcje mają zbyt wiele ograniczeń i często potykają się w bardziej potężnych i złożonych formułach looku. Tak więc, aby wykonać bardziej wyrafinowane looki w swoich tabelach Excela, musisz szukać alternatyw, takich jak INDEX, MATCH i OFFSET.
Przykład 1. Formuła OFFSET dla lewego Vlookup w Excelu
Jednym z najbardziej niesławnych ograniczeń funkcji VLOOKUP jest niemożność spojrzenia na jej lewą stronę, co oznacza, że VLOOKUP może zwrócić tylko wartość na prawo od kolumny lookup.
W naszej przykładowej tabeli lookup znajdują się dwie kolumny - nazwy miesięcy (kolumna A) i premie (kolumna B). Jeśli chcesz uzyskać premię za dany miesiąc, ta prosta formuła VLOOKUP zadziała bez problemu:
=VLOOKUP(B1, A5:B11, 2, FALSE)
Jednak, gdy tylko zamienisz kolumny w tabeli lookup, natychmiast spowoduje to błąd #N/A:
Aby obsłużyć lewy lookup, potrzebujesz bardziej uniwersalnej funkcji, która nie dba o to, gdzie znajduje się kolumna zwrotna. Jednym z możliwych rozwiązań jest użycie kombinacji funkcji INDEX i MATCH. Innym podejściem jest użycie OFFSET, MATCH i ROWS:
OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( lookup_table ), 1) ,0) -1, return__col_offset , 1, 1)Gdzie:
- Lookup_col_offset - to liczba kolumn, które należy przenieść z punktu początkowego do kolumny lookup.
- Return_col_offset - to liczba kolumn do przesunięcia od punktu początkowego do kolumny zwrotnej.
W naszym przykładzie tabela lookup to A5:B9, a wartość lookup znajduje się w komórce B1, przesunięcie kolumny lookup wynosi 1 (ponieważ szukamy wartości lookup w drugiej kolumnie (B), musimy przesunąć się o 1 kolumnę w prawo od początku tabeli), przesunięcie kolumny zwrotu wynosi 0, ponieważ zwracamy wartości z pierwszej kolumny (A):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
Wiem, że formuła wygląda trochę topornie, ale działa :)
Przykład 2. Jak zrobić górny lookup w Excelu
Podobnie jak w przypadku VLOOKUP nie mogąc patrzeć w lewo, jej poziomy odpowiednik - funkcja HLOOKUP - nie może patrzeć w górę, aby zwrócić wartość.
Jeśli potrzebujesz przeskanować górny rząd w poszukiwaniu dopasowań, formuła OFFSET MATCH może ponownie pomóc, ale tym razem będziesz musiał wzbogacić ją o funkcję COLUMNS, jak poniżej:
OFFSET( lookup_table , return__row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, KOLUMNY( lookup_table )), 0) -1, 1, 1)Gdzie:
- Lookup_row_offset - liczba wierszy do przeniesienia z punktu początkowego do wiersza lookup.
- Return_row_offset - liczba wierszy do przesunięcia od punktu początkowego do wiersza zwrotnego.
Zakładając, że tabela lookupów to B4:F5, a wartość lookupu znajduje się w komórce B1, formuła przebiega następująco:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
W naszym przypadku przesunięcie wiersza lookup wynosi 1, ponieważ nasz zakres lookup jest 1 wiersz w dół od punktu początkowego, przesunięcie wiersza zwrotu wynosi 0, ponieważ zwracamy mecze z pierwszego wiersza w tabeli.
Przykład 3. dwukierunkowe wyszukiwanie (według wartości w kolumnie i wierszu)
Dwukierunkowy lookup zwraca wartość na podstawie dopasowań w obu wierszach i kolumnach. I możesz użyć następującej formuły tablicy podwójnego lookupu, aby znaleźć wartość na przecięciu określonego wiersza i kolumny:
=OFFSET( tabela podawcza , MATCH( wartość podglądu wiersza , OFFSET( tabela podawcza , 0, 0, ROWS( tabela podawcza ), 1), 0) -1, MATCH( wartość podglądu kolumny , OFFSET( tabela podawcza , 0, 0, 1, KOLUMNY( tabela podawcza )), 0) -1)Biorąc pod uwagę, że:
- Tablicą poglądową jest A5:G9
- Wartość do dopasowania w wierszach znajduje się w B2
- Wartość do dopasowania na kolumnach znajduje się w B1
Otrzymujesz następującą dwuwymiarową formułę lookup:
=OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, WIERSZE(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, KOLUMNY(A5:G9)), 0) -1)
Nie jest to najłatwiejsza rzecz do zapamiętania, prawda? Ponadto jest to formuła tablicowa, więc nie zapomnij nacisnąć Ctrl + Shift + Enter, aby wprowadzić ją poprawnie.
Oczywiście długa formuła OFFSET nie jest jedynym możliwym sposobem na wykonanie podwójnego lookupu w Excelu. Ten sam efekt można uzyskać stosując funkcje VLOOKUP & MATCH, SUMPRODUCT lub INDEX & MATCH. Istnieje nawet sposób bezformułowy - wykorzystanie nazwanych zakresów i operatora przecięcia (spacja). Poniższy tutorial wyjaśnia szczegółowo wszystkie alternatywne rozwiązania: Jak wykonać dwukierunkowylookup w Excelu.
Funkcja OFFSET - ograniczenia i alternatywy
Mamy nadzieję, że przykłady formuł na tej stronie rzuciły trochę światła na to, jak używać OFFSET w Excelu. Jednak, aby skutecznie wykorzystać funkcję w swoich własnych skoroszytach, należy nie tylko znać jej mocne strony, ale także uważać na jej słabości.
Najbardziej krytyczne ograniczenia funkcji OFFSET w Excelu są następujące:
- Podobnie jak inne funkcje lotne, OFFSET jest funkcja wymagająca dużych zasobów Przy każdej zmianie w danych źródłowych formuły OFFSET są ponownie obliczane, co sprawia, że Excel jest zajęty przez dłuższy czas. Nie stanowi to problemu w przypadku pojedynczej formuły w małym arkuszu kalkulacyjnym. Jeśli jednak w skoroszycie znajdują się dziesiątki lub setki formuł, ponowne obliczenia w programie Microsoft Excel mogą zająć sporo czasu.
- Formuły OFFSET w Excelu to. trudno powiedzieć Ponieważ referencje zwracane przez funkcję OFFSET są dynamiczne, duże formuły (zwłaszcza z zagnieżdżonymi OFFSETami) mogą być dość trudne do debugowania.
Alternatywy dla stosowania opcji OFFSET w programie Excel
Jak to często bywa w Excelu, ten sam wynik można osiągnąć na wiele różnych sposobów. Oto więc trzy eleganckie alternatywy dla OFFSET.
- Tabele w Excelu
Od Excela 2002 mamy naprawdę wspaniałą funkcję - pełnoprawne tabele Excela, w przeciwieństwie do zwykłych zakresów. Aby stworzyć tabelę z danych strukturalnych, wystarczy kliknąć Insert> Tabela na Strona główna lub naciśnij Ctrl + T .
Wprowadzając formułę w jednej komórce tabeli Excela, można utworzyć tzw. kolumnę obliczoną, która automatycznie kopiuje formułę do wszystkich innych komórek w tej kolumnie i dostosowuje formułę dla każdego wiersza w tabeli.
Co więcej, każda formuła odwołująca się do danych tabeli automatycznie dostosowuje się, aby uwzględnić nowe wiersze dodane do tabeli lub wykluczyć wiersze usunięte. Technicznie rzecz biorąc, takie formuły operują na kolumnach lub wierszach tabeli, które są zakresy dynamiczne Każda tabela w skoroszycie ma unikalną nazwę (domyślnie są to Tabela1, Tabela2 itd.), a nazwę tabeli można dowolnie zmieniać za pomocą polecenia Projekt tab> Właściwości grupa> Nazwa tabeli pole tekstowe.
Poniższy zrzut ekranu demonstruje formułę SUM, która odnosi się do Bonus kolumny tabeli3. Proszę zwrócić uwagę, że formuła zawiera kolumnę tabeli nazwa kolumny a nie zakres komórek.
- Funkcja INDEX w programie Excel
Chociaż nie dokładnie w taki sam sposób jak OFFSET, Excel INDEX może być również używany do tworzenia dynamicznych odniesień do zakresu. W przeciwieństwie do OFFSET, funkcja INDEX nie jest lotna, więc nie spowolni twojego Excela.
- Funkcja INDIRECT w programie Excel
Za pomocą funkcji INDIRECT można tworzyć dynamiczne odwołania do zakresów z wielu źródeł, takich jak wartości komórek, wartości komórek i tekst, nazwane zakresy. Może również dynamicznie odwoływać się do innego arkusza Excel lub skoroszytu. Wszystkie te przykłady formuł można znaleźć w naszym samouczku funkcji Excel INDIRECT.
Czy pamiętasz pytanie zadane na początku tego tutorialu -. Czym jest OFFSET w programie Excel? Mam nadzieję, że teraz znasz odpowiedź : ) Jeśli chcesz trochę więcej praktycznego doświadczenia, nie krępuj się pobrać naszego zeszytu ćwiczeń (patrz poniżej) zawierającego wszystkie formuły omawiane na tej stronie i odwrócić je dla głębszego zrozumienia. Dziękuję za przeczytanie!
Zeszyt ćwiczeń do pobrania
Przykłady formuły OFFSET (plik .xlsx)