Spis treści
Łatwy sposób na przekształcenie tablicy lub zakresu w kolumnę za pomocą funkcji TOCOL.
Możliwość transpozycji danych z kolumn do wierszy i w odwrotnym kierunku jest w Excelu od dłuższego czasu. Jednak przekształcanie zakresu komórek w pojedynczą kolumnę było zadaniem trudnym do złamania. Teraz to się w końcu zmienia. Microsoft wprowadził nową funkcję o nazwie TOCOL, która potrafi w mgnieniu oka wykonać transformację tablicy do kolumny. Poniżej znajduje się lista zadań, które ta nowa funkcja może łatwo rozwiązać.
Funkcja TOCOL w programie Excel
Funkcja TOCOL w programie Excel przekształca tablicę lub zakres komórek w pojedynczą kolumnę.
Funkcja przyjmuje trzy argumenty, ale tylko pierwszy jest wymagany.
TOCOL(tablica, [ignore], [scan_by_column])Gdzie:
Array (wymagane) - tablica lub zakres do przekształcenia w kolumnę.
Zignoruj (opcjonalne) - określa czy ignorować spacje lub/i błędy. Może być jedną z tych wartości:
- 0 lub pominięty (domyślnie) - zachowaj wszystkie wartości
- 1 - ignorowanie pustych miejsc
- 2 - ignorowanie błędów
- 3 - ignorowanie pustych miejsc i błędów
Scan_by_column (opcjonalne) - określa, czy macierz ma być skanowana poziomo czy pionowo:
- FALSE lub pominięty (domyślnie) - skanuje tablicę według wierszy od lewej do prawej.
- TRUE - skanuje tablicę po kolumnie z góry na dół.
Wskazówki:
- Aby przekształcić tablicę w pojedynczy wiersz, należy użyć funkcji TOROW.
- Aby wykonać odwrotną transformację kolumny do tablicy, użyj funkcji WRAPCOLS do zawijania według kolumny lub funkcji WRAPROWS do zawijania według wiersza.
- Do transpozycji tablicy z poziomu na pion lub odwrotnie, czyli zamiany wierszy na kolumny, służy funkcja TRANSPOSE.
Dostępność TOCOL
TOCOL to nowa funkcja, która jest obsługiwana w programie Excel dla Microsoft 365 (dla Windows i Mac) oraz Excel dla sieci.
Podstawowa formuła TOCOL do przekształcenia zakresu w kolumnę
Wzór TOCOL w najprostszej postaci wymaga tylko jednego argumentu -. macierz . Na przykład, aby umieścić dwuwymiarową tablicę składającą się z 3 kolumn i 4 wierszy w jednej kolumnie, wzór to:
=TOCOL(A2:C5)
Formuła jest wprowadzana tylko w jednej komórce (E2 w tym przykładzie) i automatycznie rozlewa się na poniższe komórki. W kategoriach Excela wynik nazywany jest zakresem rozlewania.
Jak działa ta formuła:
Z technicznego punktu widzenia zakres A2:C5 jest najpierw przekształcany w tablicę dwuwymiarową. Proszę zwrócić uwagę na oddzielone średnikiem wiersze i ograniczone przecinkami kolumny:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
Funkcja TOCOL skanuje tablicę od lewej do prawej i przekształca ją w jednowymiarową tablicę pionową:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
Wynik umieszczany jest w komórce E2, z której rozlewa się do poniższych komórek.
Jak wykorzystać funkcję TOCOL w Excelu - przykłady formuł
Aby lepiej zrozumieć możliwości funkcji TOCOL i to, jakie zadania może ona obejmować, przyjrzyjmy się kilku przykładom formuł.
Przekształć tablicę w kolumnę, ignorując puste miejsca i błędy
Jak być może zauważyłeś w poprzednim przykładzie, domyślna formuła TOCOL zachowuje wszystkie wartości z tablicy źródłowej, w tym puste komórki i błędy.
W wynikowej tablicy puste komórki są reprezentowane przez zera, co może być dość mylące, zwłaszcza jeśli oryginalna tablica ma wartości 0. Rozwiązaniem jest półfabrykaty W tym celu ustawiasz drugi argument na 1:
=TOCOL(A2:C5, 1)
Do ignorować błędy , ustaw 2. argument na 2:
=TOCOL(A2:C5, 2)
Aby wykluczyć jedno i drugie, puste miejsca i błędy , użyj 3 dla ignorować argument:
=TOCOL(A2:C5, 3)
Skanowanie matrycy w poziomie lub w pionie
Przy domyślnym scan_by_column argument (FALSE lub pominięty), funkcja TOCOL skanuje tablicę poziomo według wierszy. Aby przetwarzać wartości według kolumn, ustaw ten argument na TRUE lub 1. Na przykład:
=TOCOL(A2:C5, ,TRUE)
Zauważ, że w obu przypadkach zwrócone tablice mają ten sam rozmiar, ale wartości są ułożone w innej kolejności.
Połącz wiele zakresów w jedną kolumnę
Jeśli mamy do czynienia z kilkoma nie sąsiadującymi ze sobą zakresami, to można najpierw połączyć zakresy pionowo w jedną tablicę za pomocą funkcji VSTACK, a następnie za pomocą TOCOL przekształcić połączoną tablicę w kolumnę.
Zakładając, że pierwszy zakres to A2:C4, a drugi zakres to A8:C9, formuła przyjmuje taką postać:
=TOCOL(VSTACK(A2:C4, A8:C9))
Formuła ta demonstruje domyślne zachowanie - odczytuje połączone tablice poziomo od lewej do prawej, jak pokazano w kolumnie E na poniższym obrazku.
Aby odczytywać wartości pionowo z góry na dół, ustawiasz 3. argument TOCOL na TRUE:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Zwróć uwagę, że w tym przypadku formuła najpierw zwraca wartości z kolumny A obu tablic, potem z kolumny B itd. Powodem jest to, że TOCOL skanuje pojedynczą tablicę ułożoną w stos, a nie oryginalne poszczególne zakresy.
Jeśli twoja logika biznesowa wymaga układania oryginalnych zakresów poziomo, a nie pionowo, to użyj funkcji HSTACK zamiast VSTACK.
Aby dołączyć każdą kolejną tablicę do prawej strony poprzedniej i czytać połączone tablice w poziomie, wzór to:
=TOCOL(HSTACK(A2:C4, A8:C10))
Aby dodać każdą kolejną tablicę na prawo od poprzedniej i zeskanować połączone tablice w pionie, wzór to:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Wyodrębnij unikalne wartości z zakresu wielokolumnowego
Funkcja Excel UNIQUE może łatwo znaleźć unikaty w pojedynczej kolumnie lub wierszu, a także zwrócić unikaty w wierszach, ale nie może wydobyć unikalnych wartości z tablicy wielokolumnowej. Rozwiązaniem jest użycie jej razem z funkcją TOCOL.
Na przykład, aby wyodrębnić wszystkie różne (distinct) wartości z zakresu A2:C7, wzór to:
=UNIQUE(TOCOL(A2:C7))
Dodatkowo możesz zawinąć powyższą formułę w funkcję SORT, aby uporządkować zwróconą tablicę w kolejności alfabetycznej:
=SORT(UNIQUE(TOCOL(A2:C7)))
Jak przekonwertować zakres na kolumnę w programie Excel 365 - 2010
W wersjach Excela, w których funkcja TOCOL nie jest obsługiwana, istnieje kilka alternatywnych sposobów przekształcenia zakresu komórek w kolumnę. Rozwiązania te są dość podstępne, ale w każdym razie działają.
Aby odczytać zakres według wierszy:
INDEX( zakres , QUOTIENT(ROW(A1)-1, COLUMNS( zakres ))+1, MOD(WIERSZ(A1)-1, KOLUMNY( zakres ))+1)Aby odczytać zakres według kolumn:
INDEX( zakres , MOD(WIERSZ(A1)-1, WIERSZE( zakres ))+1, ILORAZ(WIERSZ(A1)-1, WIERSZE( zakres ))+1)Dla naszego przykładowego zbioru danych wzory są następujące:
Aby zeskanować zakres poziomo od lewej do prawej :
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Formuła ta jest równoważna funkcji TOCOL z trzecim argumentem ustawionym na FALSE lub pominiętym:
=TOCOL(A2:C5)
Aby zeskanować zakres pionowo od góry do dołu :
=INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)
Wzór ten można porównać do funkcji TOCOL z trzecim argumentem ustawionym na TRUE:
=TOCOL(A2:C5, ,TRUE)
W przeciwieństwie do TOCOL, formuły alternatywne należy wpisać w każdej komórce, w której chcemy, aby pojawiły się wyniki. W naszym przypadku formuły trafiają do komórek E2 (po wierszu) i G2 (po kolumnie), a następnie są kopiowane w dół do wiersza 13.
Jeśli formuły zostaną skopiowane do większej liczby wierszy niż potrzeba, w "dodatkowych" komórkach pojawi się błąd #REF! Aby temu zapobiec, można zagnieździć formuły w funkcji IFERROR w następujący sposób:
=IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)), "")
Zauważ, że aby formuły kopiowały się poprawnie, blokujemy zakres za pomocą bezwzględnych odwołań do komórek ($A$2:$C$5). Zamiast tego możesz użyć zakresu nazwanego.
Jak działają te formuły
Poniżej znajduje się szczegółowe rozbicie pierwszej formuły, która porządkuje komórki według wierszy:
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Chodzi o to, aby użyć funkcji INDEX do zwrócenia wartości określonej komórki na podstawie jej względnych numerów wierszy i kolumn w zakresie.
Na stronie numer rzędu jest obliczany przez tę kombinację:
ILORAZ(WIERSZ(A1)-1, KOLUMNY($A$2:$C$5))+1
QUOTIENT zwraca część całkowitą podziału.
Dla licznik , używasz ROW(A1)-1, który zwraca numer porządkowy od 0 w E2 (pierwsza komórka, w której wpisano formułę) do 11 w E13 (ostatnia komórka, w której wpisano formułę).
Na stronie mianownik brough by COLUMNS($A$2:$C$5)) jest stała i równa liczbie kolumn w twoim zakresie (3 w naszym przypadku).
Teraz, jeśli sprawdzisz wynik KWOTY dla pierwszych 3 komórek (E2:E4), zobaczysz, że jest on równy 0 (ponieważ część całkowita podziału wynosi zero). Dodanie 1 daje wiersz o numerze 1.
Dla kolejnych 3 komórek (E5:E5) QUOTIENT zwraca 1, a operacja +1 dostarcza wiersz o numerze 2. I tak dalej.
Innymi słowy, ta część formuły tworzy powtarzającą się sekwencję liczb, taką jak 1,1,1,2,2,3,3,3,4,4,4,... Każda liczba powtarza się tyle razy, ile jest kolumn w twoim zakresie.
Aby obliczyć numer kolumny , budujesz odpowiedni ciąg liczbowy korzystając z funkcji MOD:
MOD(WIERSZ(A1)-1, KOLUMNY($A$2:$C$5))+1
Ponieważ w naszym zakresie (A2:C5) są 3 kolumny, to kolejność musi być 1,2,3,1,2,3,....
Funkcja MOD zwraca resztę po dzieleniu.
W E2, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
staje się
MOD(1-1, 3)+1)
i zwraca 1.
W E3, MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)
staje się
MOD(2-1, 3)+1)
i zwraca 2.
Mając ustalone numery wierszy i kolumn, INDEX bez problemu pobiera żądaną wartość.
W komórce E2, INDEX($A$2:$C$5, 1, 1) zwraca wartość z 1. wiersza i 1. kolumny powołanego zakresu, czyli z komórki A2.
W E3, INDEX($A$2:$C$5, 1, 2) zwraca wartość z 1 wiersza i 2 kolumny, czyli z komórki B2.
I tak dalej.
Druga formuła, która skanuje zakres według kolumny, działa w podobny sposób. Różnica polega na tym, że używa MOD, aby uzyskać numer wiersza i QUOTIENT, aby uzyskać numer kolumny.
Nie działa funkcja TOCOL
Jeśli funkcja TOCOL rzuca błąd, najprawdopodobniej jest to jeden z tych powodów:
TOCOL nie jest obsługiwany w Twoim Excelu
Gdy otrzymujesz błąd #NAME?, pierwszą rzeczą do sprawdzenia jest poprawna pisownia nazwy funkcji. Jeśli nazwa jest poprawna, ale błąd się utrzymuje, funkcja nie jest dostępna w Twojej wersji Excela. W takim przypadku rozważ użycie alternatywy TOCOL.
Tablica jest zbyt duża
Błąd #NUM wskazuje, że tablica nie mieści się w kolumnie. Typowym przypadkiem jest sytuacja, gdy odwołujemy się do całych kolumn lub wierszy.
Nie ma wystarczającej liczby pustych komórek
Gdy wystąpi błąd #SPILL, sprawdź, czy kolumna, w której wprowadzono formułę, ma wystarczająco dużo pustych komórek, aby wypełnić je wynikami. Jeśli komórki są wizualnie puste, upewnij się, że nie ma w nich spacji i innych znaków niedrukowalnych. Aby uzyskać więcej informacji, zobacz Jak naprawić błąd #SPILL w programie Excel.
Oto jak można wykorzystać funkcję TOCOL w Excelu 365 i alternatywne rozwiązania we wcześniejszych wersjach, aby przekształcić tablicę dwuwymiarową w pojedynczą kolumnę. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!
Zeszyt ćwiczeń
Funkcja TOCOL w Excelu - przykłady formuł (plik .xlsx)