Оглавление
В учебнике показаны различные способы переключения строк на столбцы в 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 - использование формул ТРАНСПОЗИЦИЯ или ИНДЕКС/АДРЕС. Как и в предыдущем примере, эти формулы также сохраняют связи с исходными данными, но работают немного по-другому.
Замена строк на столбцы в Excel с помощью функции ТРАНСПОЗИЦИЯ
Как следует из названия, функция TRANSPOSE специально разработана для транспонирования данных в Excel:
=TRANSPOSE(array)В этом примере мы собираемся преобразовать другую таблицу, в которой перечислены штаты США по численности населения:
- Подсчитайте количество строк и столбцов в вашей исходной таблице и выделите такое же количество пустых ячеек, но в другом направлении.
Например, в нашей таблице-образце 7 столбцов и 6 строк, включая заголовки. Поскольку функция TRANSPOSE изменит столбцы на строки, мы выберем диапазон из 6 столбцов и 7 строк.
- Выделив пустые ячейки, введите эту формулу:
=TRANSPOSE(A1:G6)
- Поскольку наша формула должна применяться к нескольким ячейкам, нажмите Ctrl + Shift + Enter, чтобы сделать ее формулой массива.
Вуаля, столбцы заменены на строки, как мы и хотели:
Преимущества функции TRANSPOSE:
Основное преимущество использования функции TRANSPOSE заключается в том, что повернутая таблица сохраняет связь с исходной таблицей, и всякий раз, когда вы изменяете исходные данные, транспонированная таблица будет изменяться соответствующим образом.
Слабые стороны функции TRANSPOSE:
- Оригинальное форматирование таблицы не сохраняется в преобразованной таблице, как показано на скриншоте выше.
- Если в исходной таблице есть пустые ячейки, то транспонированные ячейки будут содержать 0. Чтобы исправить это, используйте TRANSPOSE в сочетании с функцией IF, как описано в примере: Как транспонировать без нулей.
- Вы не можете редактировать ячейки в повернутой таблице, поскольку она очень сильно зависит от исходных данных. Если вы попытаетесь изменить значение какой-либо ячейки, вы получите ошибку "Вы не можете изменить часть массива".
В заключение следует отметить, что какой бы хорошей и простой в использовании ни была функция TRANSPOSE, ей определенно не хватает гибкости, и поэтому во многих ситуациях она может оказаться не лучшим выходом.
Для получения дополнительной информации см. функцию Excel TRANSPOSE с примерами.
Преобразование строки в столбец с помощью функций INDIRECT и ADDRESS
В этом примере будет использоваться комбинация двух функций, что немного сложно. Поэтому давайте развернем таблицу меньшего размера, чтобы лучше сосредоточиться на формуле.
Предположим, у вас есть данные в 4 столбцах (A - D) и 5 строках (1 - 5):
Чтобы переключить столбцы на строки, сделайте следующее:
- Введите приведенную ниже формулу в самую левую ячейку диапазона назначения, например A7, и нажмите клавишу Enter:
=INDIRECT(ADDRESS(COLUMN(A1),ROW(A1)))
- Скопируйте формулу вправо и вниз на необходимое количество строк и столбцов, перетаскивая маленький черный крестик в правом нижнем углу выделенных ячеек:
Вот и все! В вашей вновь созданной таблице все столбцы поменялись на строки.
Если ваши данные начинаются в строке, отличной от 1, и столбце, отличном от A, вам придется использовать немного более сложную формулу:
=INDIRECT(ADDRESS(COLUMN(A1) - COLUMN($A$1) + ROW($A$1), ROW(A1) - ROW($A$1) + COLUMN($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:= "Please select the range to transpose" , Title:= "Transpose Rows to Columns" , Type :=8) Set DestRange = Application.InputBox(Prompt:= "Select the upper left cell of the destination range" , Title:= "Transpose Rows to Columns" , Type :=8) SourceRange.Copy DestRange.SelectSelection.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 вкладка> Преобразование группу, и нажмите кнопку Транспонировать кнопка.
Если вы хотите Только вставка значений или Создание ссылок на исходные данные чтобы заставить повернутую таблицу автоматически обновляться при каждом изменении, вносимом в исходную таблицу, выберите соответствующий параметр.
Готово! Таблица транспонирована, форматирование сохранено, дальнейшие манипуляции не требуются:
Если вам интересно попробовать этот и 70+ других профессиональных инструментов для Excel, приглашаю вас загрузить пробную версию нашего пакета Ultimate Suite. Спасибо за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!