Съдържание
В урока са показани различни начини за превключване на редове към колони в Excel: формули, код VBA и специален инструмент.
Транспонирането на данни в Excel е задача, позната на много потребители. Много често построявате сложна таблица само за да осъзнаете, че има смисъл да я завъртите за по-добър анализ или представяне на данни в графики.
В тази статия ще намерите няколко начина за преобразуване на редове в колони (или колони в редове), както и да го наричате, това е едно и също нещо : ) Тези решения работят във всички версии на Excel 2010 до Excel 365, обхващат много възможни сценарии и обясняват най-типичните грешки.
Конвертиране на редове в колони в Excel с помощта на Paste Special
Да предположим, че имате набор от данни, подобен на този, който виждате в горната част на графиката по-долу. Имената на държавите са организирани в колони, но списъкът на държавите е твърде дълъг, така че е по-добре да променим колоните в редове, за да може таблицата да се побере на екрана:
За да превключите редове към колони, изпълнете следните стъпки:
- Избиране на оригиналните данни. За да изберете бързо цялата таблица, т.е. всички клетки с данни в електронна таблица, натиснете Ctrl + Home и след това Ctrl + Shift + End .
- Копирайте избраните клетки, като щракнете с десния бутон на мишката върху селекцията и изберете Копие от контекстното меню или чрез натискане на Ctrl + C .
- Изберете първата клетка от обхвата на дестинацията.
Не забравяйте да изберете клетка, която не попада в обхвата, съдържащ оригиналните данни, така че областите за копиране и поставяне да не се припокриват. Например, ако в момента имате 4 колони и 10 реда, преобразуваната таблица ще има 10 колони и 4 реда.
- Щракнете с десния бутон върху клетката на дестинацията и изберете Специално поставяне от контекстното меню, след което изберете Транспониране .
За повече информация вижте Как да използваме Paste Special в Excel.
Забележка: Ако изходните ви данни съдържат формули, не забравяйте да използвате правилно относителни и абсолютни препратки в зависимост от това дали те трябва да се коригират или да останат заключени към определени клетки.
Както току-що видяхте, функцията Paste Special ви позволява да извършвате трансформации от ред в колона (или от колона в ред) буквално за няколко секунди. Този метод също така копира форматирането на вашите оригинални данни, което добавя още един аргумент в негова полза.
Този подход обаче има два недостатъка които не му позволяват да се нарече перфектно решение за транспониране на данни в Excel:
- Той не е подходящ за завъртане на напълно функционални таблици на Excel. Ако копирате цялата таблица и след това отворите Специално поставяне диалогов прозорец, ще намерите Транспониране В този случай трябва или да копирате таблицата без заглавията на колоните, или първо да я преобразувате в диапазон.
- Специално поставяне > Транспониране не свързва новата таблица с оригиналните данни, така че е подходящ само за еднократни преобразувания. При всяка промяна на изходните данни ще трябва да повторите процеса и да завъртите таблицата наново. Никой не би искал да губи времето си, за да превключва едни и същи редове и колони отново и отново, нали?
Как да транспонирате таблица и да я свържете с оригиналните данни
Нека видим как можете да превключвате редове към колони с помощта на познатия Специално поставяне Най-хубавото при този подход е, че когато промените данните в изходната таблица, обърнатата таблица ще отрази промените и ще се актуализира съответно.
- Копирайте редовете, които искате да превърнете в колони (или колоните, които трябва да се променят в редове).
- Изберете празна клетка в същия или в друг работен лист.
- Отворете Специално поставяне диалогов прозорец, както е обяснено в предишния пример, и щракнете върху Поставяне на връзка в долния ляв ъгъл:
Ще получите резултат, подобен на този:
Това ще превърне масата ви в нещо малко страшно, както виждате на снимката по-долу, но не се паникьосвайте, само още 2 стъпки и ще постигнете желания резултат.
Единственият недостатък на този подход е, че оригиналното форматиране се губи в процеса и ще трябва да го възстановите ръчно (ще ви покажа бърз начин за това по-нататък в този урок).
Как да транспонирате в Excel с помощта на формули
По-бърз начин за динамично превключване на колони към редове в Excel е чрез използване на формулата TRANSPOSE или INDEX/ADDRESS. Подобно на предишния пример, тези формули също запазват връзките с оригиналните данни, но работят по малко по-различен начин.
Промяна на редове към колони в Excel с помощта на функцията TRANSPOSE
Както подсказва името ѝ, функцията TRANSPOSE е специално разработена за транспониране на данни в Excel:
=TRANSPOSE(масив)В този пример ще преобразуваме друга таблица, която съдържа списък на щатите на САЩ по население:
- Пребройте броя на редовете и колоните в оригиналната таблица и изберете същия брой празни клетки, но в другата посока.
Например нашата примерна таблица има 7 колони и 6 реда, включително заглавията. Тъй като функцията TRANSPOSE ще промени колоните в редове, избираме диапазон от 6 колони и 7 реда.
- При избрани празни клетки въведете тази формула:
=TRANSPOSE(A1:G6)
- Тъй като нашата формула трябва да се прилага към няколко клетки, натиснете Ctrl + Shift + Enter, за да я превърнете във формула за масив.
Воала, колоните са променени на редове, точно както искахме:
Предимства на функцията TRANSPOSE:
Основното предимство на използването на функцията TRANSPOSE е, че завъртяната таблица запазва връзката с изходната таблица и при всяка промяна на изходните данни транспонираната таблица ще се промени съответно.
Слабости на функцията TRANSPOSE:
- Оригиналното форматиране на таблицата не е запазено в преобразуваната таблица, както се вижда на снимката на екрана по-горе.
- Ако в оригиналната таблица има празни клетки, транспонираните клетки ще съдържат 0 вместо това. За да поправите това, използвайте TRANSPOSE в комбинация с функцията IF, както е обяснено в този пример: Как да транспонирате без нули.
- Не можете да редактирате нито една клетка в завъртената таблица, тъй като тя е силно зависима от изходните данни. Ако се опитате да промените стойността на някоя клетка, ще получите грешка "Не можете да промените част от масив".
В заключение ще кажем, че колкото и добра и лесна за използване да е функцията TRANSPOSE, тя със сигурност не е достатъчно гъвкава и затова може да не е най-добрият начин за действие в много ситуации.
За повече информация вижте функцията TRANSPOSE на Excel с примери.
Преобразуване на ред в колона с функциите INDIRECT и ADDRESS
В този пример ще се използва комбинация от две функции, което е малко сложно. Така че, нека завъртим по-малка таблица, за да можем да се фокусираме по-добре върху формулата.
Да предположим, че имате данни в 4 колони (A - D) и 5 реда (1 - 5):
За да превключите колоните на редове, направете следното:
- Въведете формулата по-долу в най-лявата клетка на целевия диапазон, например A7, и натиснете клавиша Enter:
=ИНДИРЕКТНО(АДРЕС(КОЛОНА(A1),РЕД(A1))
- Копирайте формулата надясно и надолу до толкова редове и колони, колкото е необходимо, като плъзнете малкото черно кръстче в долния десен ъгъл на избраните клетки:
И това е всичко! В новосъздадената таблица всички колони са променени на редове.
Ако данните ви започват в ред, различен от 1, и колона, различна от А, ще трябва да използвате малко по-сложна формула:
=INDIRECT(АДРЕС(КОЛОНА(A1) - КОЛОНА($A$1) + РЕД($A$1), РЕД(A1) - РЕД($A$1) + КОЛОНА($A$1)))
Където A1 е най-горната лява клетка на таблицата с източника. Също така, моля, обърнете внимание на използването на абсолютни и относителни препратки към клетките.
Въпреки това транспонираните клетки изглеждат много обикновени и скучни в сравнение с оригиналните данни:
Но не се разочаровайте, този проблем може лесно да бъде отстранен. За да възстановите първоначалното форматиране, ето какво трябва да направите:
- Копирайте оригиналната таблица.
- Изберете получената таблица.
- Щракнете с десния бутон върху получената таблица и изберете Опции за вмъкване > Форматиране на .
Предимства : Тази формула осигурява по-гъвкав начин за превръщане на редове в колони в Excel. Тя позволява да се правят всякакви промени в транспонираната таблица, тъй като се използва обикновена формула, а не формула за масиви.
Недостатъци : Виждам само едно - загубено е форматирането на редовите данни. Въпреки това можете бързо да го възстановите, както е показано по-горе.
Как работи тази формула
След като вече знаете как да използвате комбинацията INDIRECT / ADDRESS, може би ще искате да разберете какво всъщност прави формулата.
Както подсказва името ѝ, функцията INDIRECT се използва за индиректно препращане към клетка. Но истинската сила на INDIRECT е, че може да превърне всеки низ в препратка, включително низ, който сте изградили с помощта на други функции и стойностите на други клетки. И точно това ще направим. Ако сте проследили дотук, ще разберете всичко останало с лекота : )
Както си спомняте, във формулата използвахме още 3 функции - ADDRESS, COLUMN и ROW.
Функцията ADDRESS получава адреса на клетката съответно по зададените от вас номера на ред и колона. Моля, запомнете реда: първи - ред, втори - колона.
В нашата формула предоставяме координатите в обратен ред и това всъщност прави трика! С други думи, тази част от формулата ADDRESS(COLUMN(A1),ROW(A1)) разменя редове с колони, т.е. взема номер на колона и го превръща в номер на ред, а след това взема номер на ред и го превръща в номер на колона.
Накрая функцията INDIRECT извежда завъртените данни. Нищо страшно, нали?
Транспониране на данни в Excel с помощта на макрос VBA
За да автоматизирате преобразуването на редове в колони в Excel, можете да използвате следния макрос:
Sub TransposeColumnsRows() Dim SourceRange As Range Dim DestRange As Range Set SourceRange = Application.InputBox(Prompt:= "Моля, изберете диапазона за транспониране" , Title:= "Transpose Rows to Columns" , Type :=8) Set DestRange = Application.InputBox(Prompt:= "Изберете горната лява клетка на целевия диапазон" , Title:= "Transpose Rows to Columns" , Type :=8) SourceRange.Copy DestRange.Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= False , Transpose:= True Application.CutCopyMode = False End SubЗа да добавите макрос към работния си лист, следвайте указанията, описани в Как да вмъкнем и стартираме VBA код в Excel.
Забележка. Транспонирането с VBA има ограничение от 65536 елемента. Ако масивът ви надхвърли това ограничение, допълнителните данни ще бъдат изхвърлени безшумно.
Как да използвате макроса за преобразуване на ред в колона
След като макросът е вмъкнат в работната ви книга, изпълнете следните стъпки, за да завъртите таблицата си:
- Отворете целевия работен лист, натиснете Alt + F8 , изберете TransposeColumnsRows и щракнете върху Изпълнявайте .
Насладете се на резултата :)
Превключване на колони и редове с инструмента Транспониране
Ако редовно ви се налага да извършвате трансформации от ред в колона, може би всъщност търсите по-бърз и по-прост начин. За щастие аз имам такъв начин в моя Excel, както и други потребители на нашия Ultimate Suite :)
Нека ви покажа как да превключвате редове и колони в Excel буквално с няколко кликвания:
- Изберете всяка отделна клетка в таблицата, отидете в Ablebits tab> Преобразуване и щракнете върху Транспониране бутон.
Ако искате да Само стойности за поставяне или Създаване на връзки към изходните данни за да накарате ротираната таблица да се актуализира автоматично при всяка промяна, която правите в оригиналната таблица, изберете съответната опция.
Готово! Таблицата е преместена, форматирането е запазено и не са необходими допълнителни манипулации:
Ако сте любопитни да изпробвате този и над 70 други професионални инструмента за Excel, ви каня да изтеглите пробна версия на нашия Ultimate Suite. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!