Spis treści
Najszybszym sposobem przekształcenia kolumny lub wiersza wartości w tablicę dwuwymiarową jest użycie funkcji WRAPCOLS lub WRAPROWS.
Od najwcześniejszych dni programu Excel, był on bardzo dobry w obliczaniu i analizowaniu liczb. Ale manipulowanie tablicami tradycyjnie było wyzwaniem. Wprowadzenie dynamicznych tablic sprawiło, że użycie formuł tablicowych stało się o wiele łatwiejsze. A teraz, Microsoft wypuszcza zestaw nowych dynamicznych funkcji tablicowych do manipulowania i ponownego kształtowania tablic. Ten samouczek nauczy Cię jak używać dwóch takich funkcji,WRAPCOLS i WRAPROWS, aby błyskawicznie przekształcić kolumnę lub wiersz w tablicę 2D.
Funkcja WRAPCOLS w programie Excel
Funkcja WRAPCOLS w programie Excel przekształca wiersz lub kolumnę wartości w tablicę dwuwymiarową na podstawie określonej liczby wartości w wierszu.
Składnia ma następujące argumenty:
WRAPCOLS(vector, wrap_count, [pad_with])Gdzie:
- wektor (wymagane) - źródłowa jednowymiarowa tablica lub zakres.
- opasanie_liczba (wymagane) - maksymalna ilość wartości w kolumnie.
- wyściełany (opcjonalne) - wartość, która ma być wypełniona ostatnią kolumną, jeżeli nie ma wystarczającej ilości pozycji do jej wypełnienia. Jeżeli zostanie pominięta, to brakujące wartości zostaną wypełnione #N/A (domyślnie).
Na przykład, aby zmienić zakres B5:B24 na tablicę dwuwymiarową z 5 wartościami w każdej kolumnie, formuła to:
=WRAPROWS(B5:B24, 5)
Wprowadzasz formułę w dowolnej komórce, a ona automatycznie rozlewa się na tyle komórek, ile potrzeba. W wyjściu WRAPCOLS wartości są ułożone pionowo, od góry do dołu, na podstawie opasanie_liczba wartość. Po osiągnięciu liczby rozpoczyna się nowa kolumna.
Funkcja WRAPROWS w programie Excel
Funkcja WRAPROWS w programie Excel przekształca wiersz lub kolumnę wartości w tablicę dwuwymiarową na podstawie określonej przez użytkownika liczby wartości w wierszu.
Składnia jest następująca:
WRAPROWS(vector, wrap_count, [pad_with])Gdzie:
- wektor (wymagane) - źródłowa jednowymiarowa tablica lub zakres.
- opasanie_liczba (wymagane) - maksymalna ilość wartości w wierszu.
- wyściełany (opcjonalne) - wartość, którą ma być wypełniony ostatni wiersz, jeżeli nie ma wystarczającej ilości elementów do jego wypełnienia. Domyślnie jest to #N/A.
Na przykład, aby przekształcić zakres B5:B24 w tablicę 2D mającą 5 wartości w każdym wierszu, wzór to:
=WRAPROWS(B5:B24, 5)
Formułę wprowadza się w górnej, lewej komórce zakresu rozlewu, a ona automatycznie wypełnia wszystkie pozostałe komórki. Funkcja WRAPROWS układa wartości poziomo, od lewej do prawej, na podstawie opasanie_liczba wartość. Po osiągnięciu licznika rozpoczyna nowy rząd.
Dostępność WRAPCOLS i WRAPROWS
Obie funkcje są dostępne tylko w programie Excel dla Microsoft 365 (Windows i Mac) oraz Excel dla sieci.
We wcześniejszych wersjach można użyć tradycyjnych, bardziej złożonych formuł do wykonania przekształceń kolumna-układ i wiersz-układ. W dalszej części tego poradnika szczegółowo omówimy alternatywne rozwiązania.
Wskazówka. Aby wykonać operację odwrotną, czyli zmienić tablicę 2D na pojedynczą kolumnę lub wiersz, należy użyć odpowiednio funkcji TOCOL lub TOROW.
Jak przekonwertować kolumnę / wiersz na zakres w Excelu - przykłady
Teraz, gdy masz już pojęcie o podstawowym użyciu, przyjrzyjmy się bliżej kilku bardziej specyficznym przypadkom.
Ustawienie maksymalnej liczby wartości w kolumnie lub wierszu
W zależności od struktury oryginalnych danych, może okazać się, że nadają się one do ponownego ułożenia w kolumnach (WRAPCOLS) lub wierszach (WRAPROWS). Niezależnie od tego, której funkcji użyjesz, jest to opasanie_liczba argument określający maksymalną liczbę wartości w każdej kolumnie/wierszu.
Na przykład, aby przekształcić zakres B4:B23 w tablicę 2D, tak aby każda kolumna miała maksymalnie 10 wartości, użyj tej formuły:
=WRAPCOLS(B4:B23, 10)
Aby uporządkować ten sam zakres według wierszy, tak aby każdy wiersz miał maksymalnie 4 wartości, wzór to:
=WRAPROWS(B4:B23, 4)
Poniższy obrazek pokazuje jak to wygląda:
Wypełnij brakujące wartości w wynikowej tablicy
W przypadku, gdy nie ma wystarczających wartości do wypełnienia wszystkich kolumn/wierszy wynikowego zakresu, WRAPROWS i WRAPCOLS zwrócą błędy #N/A, aby zachować strukturę tablicy 2D.
Aby zmienić domyślne zachowanie, możesz podać niestandardową wartość dla opcjonalnego wyściełany argument.
Na przykład, aby przekształcić zakres B4:B21 w tablicę 2D o szerokości maksymalnie 5 wartości i wyścielić ostatni rząd kreskami, jeśli nie ma wystarczającej ilości danych do jego wypełnienia, użyj tej formuły:
=WRAPROWS(B4:B21, 5, "-")
Aby zastąpić brakujące wartości ciągami o zerowej długości (pustymi), wzór to:
=WRAPROWS(B4:B21, 5, "")
Proszę porównać wyniki z domyślnym zachowaniem (wzór w D5), gdzie wyściełany jest pomijany:
Scalanie wielu wierszy w zakres 2D
Aby połączyć kilka oddzielnych wierszy w jedną tablicę 2D, najpierw układamy wiersze poziomo za pomocą funkcji HSTACK, a następnie zawijamy wartości za pomocą WRAPROWS lub WRAPCOLS.
Na przykład, aby połączyć wartości z 3 wierszy (B5:J5, B7:G7 i B9:F9) i zawinąć w kolumny, każda zawierająca 10 wartości, formuła to:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Aby połączyć wartości z wielu wierszy w zakres 2D, w którym każdy wiersz zawiera 5 wartości, formuła przyjmuje taką postać:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Połączenie wielu kolumn w tablicę 2D
Aby połączyć kilka kolumn w zakres 2D, najpierw układamy je w pionie za pomocą funkcji VSTACK, a następnie zawijamy wartości w wiersze (WRAPROWS) lub kolumny (WRAPCOLS).
Na przykład, aby połączyć wartości z 3 kolumn (B5:J5, B7:G7 i B9:F9) w zakres 2D, gdzie każda kolumna zawiera 10 wartości, formuła to:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Aby połączyć te same kolumny w zakres 2D, w którym każdy wiersz zawiera 5 wartości, użyj tej formuły:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Zawiń i posortuj tablicę
W sytuacji, gdy zakres źródłowy zawiera wartości w przypadkowej kolejności, a chcesz, aby wyjście było posortowane, postępuj w ten sposób:
- Posortuj początkową tablicę tak, jak chcesz, używając funkcji SORT.
- Dostarcz posortowaną tablicę do WRAPCOLS lub WRAPROWS.
Na przykład, aby zawinąć zakres B4:B23 w wiersze, po 4 wartości w każdym, i posortować wynikowy zakres od A do Z, skonstruuj formułę jak poniżej:
=WRAPROWS(SORT(B4:B23), 4)
Aby zawinąć ten sam zakres w kolumny, 10 wartości w każdej, i posortować wyjście alfabetycznie, formuła jest:
=WRAPCOLS(SORT(B4:B23), 10)
Wyniki wyglądają następująco:
Wskazówka. Aby ułożyć wartości w tablicy wynikowej w malejący , ustawić trzeci argument (. sortowanie_order ) funkcji SORT na -1.
WRAPCOLS alternatywa dla Excel 365 - 2010
W starszych wersjach Excela, w których funkcja WRAPCOLS nie jest obsługiwana, można zbudować własną formułę do zawijania wartości z tablicy jednowymiarowej do kolumn. Można to zrobić, używając łącznie 5 różnych funkcji.
Alternatywa WRAPCOLS do konwersji wiersza na zakres 2D:
IFERROR(IF(ROW(A1)> n , "", INDEX( zakres wierszy , , WIERSZ(A1) + (KOLUMNA(A1)-1)*. n )), "")Alternatywa WRAPCOLS do konwersji kolumny na zakres 2D:
IFERROR(IF(ROW(A1)> n , "", INDEX( kolumna_zakres , WIERSZ(A1) + (KOLUMNA(A1)-1)*. n )), "")Gdzie n to maksymalna liczba wartości w kolumnie.
Na poniższym obrazku używamy następującej formuły, aby przekształcić jednorzędowy zakres (D4:J4) w trzyrzędową tablicę.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
A ta formuła zmienia zakres jednokolumnowy (B4:B20) w tablicę pięciorzędową:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Powyższe rozwiązania emulują analogiczne formuły WRAPCOLS i dają takie same wyniki:
=WRAPCOLS(D4:J4, 3, "")
oraz
=WRAPCOLS(B4:B20, 5, "")
Proszę pamiętać, że w przeciwieństwie do funkcji WRAPCOLS tablicy dynamicznej, tradycyjne formuły stosują podejście jedna formuła-jedna komórka. Tak więc nasza pierwsza formuła jest wpisana w D8 i skopiowana 3 wiersze w dół i 3 kolumny w prawo. Druga formuła jest wpisana w D14 i skopiowana 5 wierszy w dół i 4 kolumny w prawo.
Jak działają te formuły
W sercu obu formuł wykorzystujemy funkcję INDEX, która zwraca wartość z dostarczonej tablicy na podstawie numeru wiersza i kolumny:
INDEX(tablica, wiersz_num, [kolumna_num])Ponieważ mamy do czynienia z tablicą jednorzędową, możemy pominąć suma wierszy więc domyślnie ustawia się na 1. Sztuczka polega na tym, aby suma kolumn obliczane automatycznie dla każdej komórki, w której skopiowana jest formuła. A oto jak to robimy:
WIERSZ(A1)+(KOLUMNA(A1)-1)*3)
Funkcja ROW zwraca numer wiersza odwołania A1, czyli 1.
Funkcja COLUMN zwraca numer kolumny referencji A1, która również wynosi 1. Odjęcie 1 zamienia ją na zero, a pomnożenie 0 przez 3 daje 0.
Następnie sumujesz 1 zwrócone przez ROW i 0 zwrócone przez COLUMN i otrzymujesz 1 jako wynik.
W ten sposób formuła INDEX w lewej górnej komórce zakresu docelowego (D8) ulega temu przekształceniu:
INDEX($D$4:$J$4, ,ROW(A1) + (KOLUMNA(A1)-1)*3))
zmiany w
INDEX($D$4:$J$4, ,1)
i zwraca wartość z 1. kolumny podanej tablicy, czyli "Jabłka" w D4.
Gdy formuła jest kopiowana do komórki D9, względne odwołania do komórek zmieniają się na podstawie względnego położenia wierszy i kolumn, podczas gdy bezwzględne odwołanie do zakresu pozostaje niezmienione:
INDEX($D$4:$J$4,, WIERSZ(A2)+(KOLUMNA(A2)-1)*3))
zamienia się w:
INDEX($D$4:$J$4,, 2+(1-1)*3))
staje się:
INDEX($D$4:$J$4,, 2))
i zwraca wartość z 2. kolumny podanej tablicy, czyli "Morele" w E4.
Funkcja JEŻELI sprawdza numer wiersza i jeśli jest on większy od podanej przez Ciebie liczby wierszy (w naszym przypadku 3) zwraca pusty ciąg (""), w przeciwnym razie wynik funkcji INDEKS:
IF(ROW(A1)>3, "", INDEX(...))
Wreszcie funkcja IFERROR naprawia błąd #REF!, który pojawia się, gdy formuła jest kopiowana do większej liczby komórek niż naprawdę jest potrzebna.
Druga formuła, która przekształca kolumnę w zakres 2D, działa na tej samej zasadzie. Różnica polega na tym, że używasz kombinacji ROW + COLUMN, aby określić suma wierszy argument dla INDEX. suma kolumn Parametr nie jest potrzebny w tym przypadku, ponieważ w tablicy źródłowej znajduje się tylko jedna kolumna.
WRAPROWS alternatywa dla Excel 365 - 2010
Aby zawinąć wartości z tablicy jednowymiarowej do wierszy w programie Excel 2019 i wcześniejszych, możesz użyć następujących alternatyw dla funkcji WRAPROWS.
Przekształcenie wiersza w zakres 2D:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( zakres wierszy , , KOLUMNA(A1)+(WIERSZ(A1)-1)*. n )), "")Zmień kolumnę na zakres 2D:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( kolumna_zakres , KOLUMNA(A1)+(WIERSZ(A1)-1)*. n )), "")Gdzie n jest maksymalną liczbą wartości w wierszu.
W naszym przykładowym zestawie danych używamy następującej formuły do przekształcenia zakresu jednorzędowego (D4:J4) w zakres trzykolumnowy. Formuła ląduje w komórce D8, a następnie jest kopiowana przez 3 kolumny i 3 wiersze.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Aby przekształcić zakres 1-kolumnowy (B4:B20) w zakres 5-kolumnowy, wprowadź poniższą formułę w D14 i przeciągnij ją przez 5 kolumn i 4 wiersze.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
W programie Excel 365 te same wyniki można osiągnąć za pomocą równoważnych formuł WRAPCOLS:
=WRAPROWS(D4:J4, 3, "")
oraz
=WRAPROWS(B4:B20, 5, "")
Jak działają te formuły
Zasadniczo formuły te działają tak samo jak w poprzednim przykładzie. Różnica polega na tym, w jaki sposób określasz suma wierszy oraz suma kolumn współrzędne dla funkcji INDEX:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
Aby uzyskać numer kolumny dla lewej górnej komórki w zakresie docelowym (D8), używasz tego wyrażenia:
KOLUMNA(A1)+(WIERSZ(A1)-1)*3)
, który zmienia się na:
1+(1-1)*3
i daje 1.
W efekcie poniższa formuła zwraca wartość z pierwszej kolumny podanej tablicy, czyli "Jabłka":
INDEX($D$4:$J$4,, 1)
Jak na razie wynik jest taki sam jak w poprzednim przykładzie, ale zobaczmy, co się dzieje w innych komórkach...
W komórce D9 względne odwołania do komórek zmieniają się w następujący sposób:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Zatem wzór przekształca się w:
INDEX($D$4:$J$4,, 1+(2-1)*3))
staje się:
INDEX($D$4:$J$4,, 4))
i zwraca wartość z 4 kolumny podanej tablicy, czyli "Wiśnie" w G4.
Funkcja JEŻELI sprawdza numer kolumny i jeśli jest on większy od podanej przez Ciebie liczby kolumn, zwraca pusty łańcuch (""), w przeciwnym razie wynik funkcji INDEKS:
IF(COLUMN(A1)>3, "", INDEX(...))
Jako wykończenie, IFERROR zapobiega pojawianiu się błędów #REF! w "dodatkowych" komórkach, jeśli skopiujesz formułę do większej liczby komórek niż jest to faktycznie potrzebne.
Nie działa funkcja WRAPCOLS lub WRAPROWS
Jeśli funkcje "zawijania" nie są dostępne w Twoim Excelu lub powodują błąd, najprawdopodobniej jest to jeden z poniższych powodów.
#NAME? error
W programie Excel 365 może wystąpić błąd #NAME?, ponieważ źle wpisałeś nazwę funkcji. W innych wersjach wskazuje, że funkcje nie są obsługiwane. Jako obejście problemu możesz użyć alternatywy WRAPCOLS lub alternatywy WRAPROWS.
#Błąd!
Błąd #VALUE występuje, jeśli wektor argument nie jest tablicą jednowymiarową.
#NUM! błąd
Błąd #NUM występuje, jeśli opasanie_liczba wartość jest 0 lub liczbą ujemną.
#Błąd!
Najczęściej błąd #SPILL wskazuje, że nie ma wystarczającej liczby pustych komórek, do których można rozlać wyniki. Wyczyść sąsiednie komórki, a problem zniknie. Jeśli błąd utrzymuje się, sprawdź, co oznacza #SPILL w Excelu i jak go naprawić.
Oto jak wykorzystać funkcje WRAPCOLS i WRAPROWS do przekształcenia jednowymiarowego zakresu w dwuwymiarową tablicę w Excelu. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!
Zeszyt ćwiczeń do pobrania
Funkcje WRAPCOLS i WRAPROWS - przykłady (plik .xlsx)