Превращение строк в столбцы и обратно
Постановка задачи
Хотим, упрощенно говоря, повернуть таблицу на бок, т.е. то, что располагалось в строке — пустить по столбцу и наоборот:
Способ 1. Специальная вставка
Выделяем и копируем исходную таблицу (правой кнопкой мыши — Копировать). Затем щелкаем правой по пустой ячейке, куда хотим поместить повернутую таблицу и выбираем из контекстного меню команду Специальная вставка (Paste Special). В открывшемся диалоговом окне ставим галочку Транспонировать (Transpose) и жмем ОК.
Минусы: не всегда корректно копируются ячейки с формулами, нет связи между таблицами (изменение данных в первой таблице не повлияет на вторую).
Плюсы: в транспонированной таблице сохраняется исходное форматирование ячеек.
Способ 2. Функция ТРАНСП
Выделяем нужное количество пустых ячеек (т.е. если, например, исходная таблица была из 3 строк и 5 столбцов, то выделить обязательно нужно диапазон из 5 строк и 3 столбцов) и вводим в первую ячейку функцию ТРАНСП (TRANSPOSE) из категории Ссылки и массивы (Lookup and Reference):
После ввода функции необходимо нажать не Enter, а Ctrl+Shift+Enter, чтобы ввести ее сразу во все выделенные ячейки как формулу массива. Если раньше не сталкивались с формулами массивов, то советую почитать тут — это весьма экзотический, но очень мощный инструмент в Excel.
Плюсы: между таблицами сохраняется связь, т.е. изменения в первой таблице тут же отражаются во второй.
Минусы: не сохраняется форматирование, пустые ячейки из первой таблицы отображаются в виде нулей во второй, нельзя редактировать отдельные ячейки во второй таблице, поскольку формулу массива можно менять только целиком.
Способ 3. Формируем адрес сами
Этот способ отчасти похож не предыдущий, но позволяет свободно редактировать значения во второй таблице и вносить в нее любые правки при необходимости. Для создания ссылок на строки и столбцы нам понадобятся четыре функции из категории Ссылки и массивы:
- Функция АДРЕС(номер_строки; номер_столбца) — выдает адрес ячейки по номеру строки и столбца на листе, т.е. АДРЕС(2;3) выдаст, например, ссылку на ячейку C2.
- Функция ДВССЫЛ(ссылка_в_виде_текста) — преобразует текстовую строку, например, «F3» в настоящую ссылку на ячейку F3.
- Функции СТРОКА(ячейка) и СТОЛБЕЦ(ячейка) — выдают номер строки и столбца для заданной ячейки, например =СТРОКА(F1) выдаст 1, а =СТОЛБЕЦ(А3) выдаст 3.
Теперь соединяем эти функции, чтобы получить нужную нам ссылку, т.е. вводим в любую свободную ячейку вот такую формулу:
=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1);СТРОКА(A1)))
в английской версии Excel это будет =INDIRECT(ADDRESS(COLUMN(A1),ROW(A1)))
А затем копируем (протягиваем) формулу на соседние ячейки как обычно черным крестом. В итоге должно получиться примерно следующее:
Т.е. при копировании формулы вниз по столбцу, она выдает ссылку, которая уходит вправо по строке и наоборот. Чего и требовалось.
Плюсы: сохраняются связи между таблицами, можно легко вносить изменения во вторую таблицу.
Минусы: форматирование не сохраняется, но его можно легко воспроизвести Специальной вставкой (вставить только Формат с флажком Транспонировать
В предыдущих статьях мы с вами уже рассматривали вопрос о том, как в Excel преобразовать строку в столбец, то есть транспонировать данные. Так как на практике данная необходимость может встречается довольно часто, мы рассмотрели создание шаблона для транспонирования данных из строки в столбец с использованием функции ТРАНСП (ТРАНСП — Автоматическое транспонироване данных в Excel).
В этой статье мы рассмотрим абстрактную, более обобщенную задачу транспонирования. В этот раз мы прибегнем к использованию Макросов.
Допустим у нас есть данные на одном листе книги для транспонирования и мы хотим перевести все строки в столбцы (т.е. выполнить транспонирование). Если мы просто выделим весь лист, то при попытке транспонирования через специальную вставку (как в первой статье) мы получим ОШИБКУ. Ошибка появится из-за того, что лист Excel не квадратный, т.е. строк в нем гораздо больше чем столбцов. Отсюда мы получили ограничение для данных которые могут быть транспонированы: ширина и длина таблицы данных для транспонирования не может превышать ширины листа Excel, а именно 16 384 ячейки для MS Excel 2010.
Но для столь большого диапазона данных операция транспонирования будет проходить крайне долго (хотя, конечно, зависит от компьютера).
Если требуется выполнять операцию постоянно, то мы имеем представление о размере таблицы данных для транспонирования и потому, для ускорения операции мы можем сократить диапазон. В нашем примере до A1:X1000. Запишем вышеизложенное макросом:
Макрос Транспонирования
Макрос копирует диапазон A1:X1000 на активном листе, создает новый лист в книге и транспонирует данные уже в новый лист.
Теперь Вы можете изменить диапазон на свой (необходимый) и использовать Макрос в работе.
он же текстом:
Sub Макрос1() Range("A1:X1000").Select Selection.Copy Sheets.Add After:=Sheets(Sheets.Count) Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True End Sub
Очень надеемся, что наша статья помогла Вам в решении Вашей проблемы. Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок расположенных ниже.
Спасибо за внимание.
SirExcel.ru – Безграничные возможности Excel
Skip to content
В этой статье показано, как столбец можно превратить в строку в Excel с помощью функции ТРАНСП, специальной вставки, кода VBA или же специального инструмента. Иначе говоря, мы научимся транспонировать таблицу.
В этой статье вы найдете несколько способов поменять местами строки и столбцы (или столбцы и строки), как бы вы это ни называли, это одно и то же Эти решения работают во всех версиях Excel 2016, 2013, 2010, 2007 и ниже, представляют множество возможных сценариев и объясняют наиболее типичные ошибки. Вот о чём мы поговорим:
- 1. Используем специальную функцию транспонирования
- 2. Как транспонировать с помощью формул
- 3. Специальная вставка.
- 4. Макрос VBA для преобразования строки в столбец
- 5. Сводная таблица для транспонирования.
- 6. Преобразование столбцов в строки с помощью специального инструмента
О вкусах не спорят. То же самое и с рабочими привычками. Некоторые пользователи Excel предпочитают организовывать данные вертикально в столбцы, тогда как другие выбирают горизонтальное расположение в строках. И при совместной работе над таблицами вкусы зачастую не совпадают …
Довольно часто вы строите сложную таблицу только для того, чтобы в конце концов понять, что имеет смысл повернуть ее для более удобного анализа показателей или же для представления их в виде графиков.
Транспонирование – это математическая операция. Это преобразование матрицы, в результате чего столбцы становятся строками, а строки превращаются в столбцы. Говоря проще, нужно все значения в строке (горизонталь) перекинуть в столбец (вертикаль).
Способ 1. Использовать функцию ТРАНСП.
В случае, когда вам нужно быстро изменить ориентацию вашей таблицы, можно использовать функцию ТРАНСП (TRANSPOSE в англоязычной версии).
Назначение функции ТРАНСП в Excel – транспонировать строку в столбец, т. е. поменять ориентацию данных с горизонтальной на вертикальную или наоборот.
Функция ТРАНСП в Excel — синтаксис
Функция транспонировать принимает только один аргумент:
= ТРАНСП(массив)
Где массив – это диапазон для транспонирования. Данные преобразуются следующим образом: первая строка исходного диапазона становится первым столбцом нового, вторая строка становится вторым столбцом и так далее.
Синтаксис ТРАНСП не оставляет места для ошибок при создании формулы. Более сложная задача – правильно записать её на рабочий лист. Если у вас нет большого опыта работы с формулами Excel в целом и формулами массивов в частности, внимательно следуйте приведенным ниже инструкциям.
1. Подсчитайте количество столбцов и строк в исходной таблице.
Эти числа понадобятся вам на следующем шаге.
В этом примере мы собираемся транспонировать небольшую таблицу Excel, которая показывает объем экспорта свежих фруктов по регионам:
2. Выберите такое же количество ячеек, но измените их ориентацию.
Ваша новая таблица будет содержать такое же количество значений, но данные теперь будут располагаться не по строке, а вертикально, по столбцам. Итак, вы выбираете диапазон пустых ячеек, который занимает то же количество строк, что и исходная таблица имела столбцов, и такое же количество колонок, как исходная таблица – строк.
В нашем случае мы выбираем диапазон из 5 столбцов и 4 строк:
3. Введите формулу ТРАНСП.
Выделив этот пустой диапазон, используйте функцию транспонирования:
=ТРАНСП(A1:D5)
Вот подробные шаги:
Сначала вы вводите знак равенства, имя функции и открывающую скобку: = ТРАНСП(
Затем выберите исходный диапазон с помощью мыши или введите его вручную:
Наконец, введите закрывающую скобку, но не нажимайте клавишу Enter! На этом этапе ваша формула должна выглядеть примерно так:
4. Запишите формулу.
Нажмите Ctrl + Shift + Enter
, чтобы правильно закончить формулу массива. Зачем это? Потому что формула должна применяться ко всем данным. И это именно то, для чего предназначены формулы массива.
После этого Excel окружит вашу формулу транспонирования {фигурными скобками}, которые видны в строке формул и являются визуальным индикатором формулы массива. Ни в коем случае не набирайте их вручную, это не сработает.
На скриншоте ниже показано, что наша исходная матрица значений была успешно транспонирована и 4 столбца были преобразованы в 4 строки. А столбцов теперь стало пять:
Примечание. Конечно, подобным образом вы можете транспонировать отдельный столбец или одну строку. Не обязательно это должна быть целая таблица.
Преимущества функции ТРАНСП:
Основное преимущество использования этой функции заключается в том, что повернутая таблица сохраняет связь с исходной. Всякий раз, когда вы меняете исходные данные, транспонированная таблица будет меняться соответствующим образом.
Слабые стороны функции ТРАНСП:
- Исходное форматирование не сохраняется в преобразованной таблице, как вы видите на скриншоте выше.
- Если в исходной таблице есть пустые клетки, вместо них ячейки новой таблицы будут содержать ноль. Чтобы исправить это, используйте ТРАНСП в комбинации с функцией ЕСЛИ, как описано в этом примере ниже: Как транспонировать без нулей.
- Вы не можете редактировать какие-либо данные в преобразованной таблице, потому что она полностью завязана на исходные данные. Если вы попытаетесь изменить какое-либо значение, то получите ошибку «Вы не можете изменить часть массива».
Итак, какой бы хорошей и простой в использовании не была бы функция ТРАНСП, ей определенно не хватает гибкости. Поэтому она может быть не самым оптимальным вариантом во многих ситуациях.
Как транспонировать таблицу без замены нулей на пробелы.
Выше мы уже упоминали, что если одна или несколько ячеек в исходной таблице пусты, то они будут иметь нулевые значения после преобразования, как показано на скриншоте ниже:
То есть, если при транспонировании строки в столбец программа обнаруживает пустую ячейку, то вместо нее сразу же вставляется ноль. Это особенность Экселя: стоит с пустой ячейкой произвести какую-то математическую операцию, и там тут же появляется ноль. А транспонирование в Excel – это математическая операция с матрицей значений.
С одной стороны, это выглядит несущественно, поскольку не меняет математические результаты в итогах. Но для вас эти нули могут выглядеть не совсем эстетично, так как меняют внешний вид данных. Ну а если они появляются посреди текстовых значений – это совсем некрасиво.
Если вы хотите оставить в новой таблице по-прежнему пустые ячейки, а не нули, то вложите функцию ЕСЛИ в формулу ТРАНСП, чтобы предварительно проверить, является ли ячейка пустой. Если она пуста, функция ЕСЛИ вернет пустую строку («»), в противном случае предоставит значение для транспонирования:
=ТРАНСП(ЕСЛИ(A1:D5=»»;»»;A1:D5))
Введите формулу, как описано выше (не забудьте нажать Ctrl + Shift + Enter
, чтобы правильно завершить формулу массива), и вы получите результат, подобный этому:
Как видите, мы транспонируем не все ячейки, а только непустые.
Советы по использованию ТРАНСП
Как вы только что видели, функция ТРАНСП имеет ряд особенностей, которые могут сбить с толку неопытных пользователей. Приведенные ниже советы помогут вам избежать некоторых типичных ошибок.
1. Как редактировать формулу?
Как функция массива, ТРАНСП не позволяет изменять часть возвращаемого массива. Чтобы отредактировать формулу транспонирования, выберите весь диапазон, к которому относится формула, внесите необходимые изменения и нажмите Ctrl + Shift + Enter
, чтобы сохранить обновленную формулу.
2. Как удалить формулу?
Чтобы удалить формулу транспонирования с листа, выберите весь диапазон, на который имеется ссылка в формуле, и нажмите клавишу Del.
3. Как заменить формулу на значения?
Когда вы переворачиваете таблицу с помощью функции ТРАНСП, исходная и новая таблицы связываются. Это означает, что всякий раз, когда вы изменяете какое-либо значение в исходной таблице, соответствующее значение в новой изменяется автоматически.
Если вы хотите разорвать связь между ними, замените формулы вычисленными значениями. Для этого выберите все ячейки преобразованной таблицы, затем нажмите Ctrl + C, чтобы скопировать их в буфер обмена. Кликните правой кнопкой мыши и выберите в контекстном меню «Специальная вставка» > « Значения». Или используйте для вставки значений вместо формул комбинацию клавиш Ctrl+Alt+V
.
Способ 2. Как транспонировать с помощью формул
Этот способ отчасти похож на предыдущий, но позволяет свободно редактировать значения во второй таблице и вносить в нее любые правки при необходимости.
Для создания ссылок на строки и столбцы нам понадобятся четыре функции из категории Ссылки и массивы:
- Функция АДРЕС(номер_строки; номер_столбца) – выдает адрес ячейки по номеру строки и столбца на листе, т.е. АДРЕС(2;3) выдаст, например, ссылку на C2.
- Функция ДВССЫЛ(ссылка_в_виде_текста) – преобразует текстовую строку, например, «F3» в настоящую ссылку на ячейку F3.
- Функции СТРОКА() и СТОЛБЕЦ() — выдают номер строки и столбца для заданной ячейки, например =СТРОКА(F1) выдаст 1, а формула =СТОЛБЕЦ(А3) возвратит 3.
Теперь соединяем эти функции, чтобы получить нужную нам ссылку на исходную таблицу. Предположим, координаты её верхнего левого угла – A1.
Вводим в любую свободную ячейку (скажем, в A8) вот такую формулу:
=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1);СТРОКА(A1)))
в английской версии Excel это будет =INDIRECT(ADDRESS(COLUMN(A1),ROW(A1)))
Чтобы столбцы превратились в строки, копируем (протягиваем) формулу вправо и вниз, перетащив маленький черный крестик в нижнем правом углу выбранных ячеек. В итоге должно получиться примерно следующее:
Вот и все! В вашей вновь созданной таблице все столбцы поменяны местами со строками.
Если ваши данные начинаются с некоторой строки, отличной от 1, и столбца, отличного от A, вам придется использовать немного более сложную формулу:
=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(B6) — СТОЛБЕЦ($B$6) + СТРОКА($B$6); СТРОКА(B6) — СТРОКА($B$6) + СТОЛБЕЦ($B$6)))
Где B6 — самая верхняя левая ячейка исходной таблицы. Также обратите внимание на использование абсолютных и относительных ссылок.
Однако транспонированные данные выглядят очень просто и тускло по сравнению с исходными. Всё форматирование потеряно.
Но не расстраивайтесь, эту проблему легко решить. Чтобы восстановить исходное форматирование, выполните следующие действия:
- Скопируйте исходную таблицу.
- Выделите получившуюся таблицу.
- Щелкните её правой кнопкой мыши и выберите «Параметры вставки» > «Форматирование» .
Преимущества: эта формула обеспечивает более гибкий способ замены строк и столбцов в Excel. Это позволяет вносить любые изменения в итоговую таблицу, поскольку вы используете обычную формулу, а не формулу массива.
Недостатки: вижу только один — теряется форматирование данных. Хотя вы можете быстро восстановить его, как описано выше.
Способ 3. Специальная вставка
Предположим, у вас есть набор данных, аналогичный тому, что вы видите в верхней части рисунка ниже. Названия стран организованы в столбцы. Но их список слишком длинный, поэтому нам лучше перевернуть столбцы в строки, чтобы всё поместилось на экране:
Для этого выполните следующие действия:
- Выберите исходные данные. Чтобы быстро выделить всю таблицу, то есть все ячейки с данными в ней, нажмите
Ctrl + Home
, а потомCtrl + Shift + End
. Вы также можете транспонировать отдельную строку или столбец. - Скопируйте выделенное, щелкнув правой кнопкой мыши и выбрав пункт Копировать в контекстном меню, или нажав
Ctrl + C
. - Выберите первую позицию целевого диапазона.
Обязательно выберите клетку, расположенную вне вашей исходной таблицы, чтобы области копирования и области вставки не перекрывались. Например, если у вас сейчас 4 столбца и 10 строк, преобразованная таблица будет иметь 10 столбцов и 4 строки. - Щелкните правой кнопкой мыши целевую ячейку и выберите «Специальная вставка» в контекстном меню, затем выберите «Транспонировать».
Как вы только что видели, функция «Специальная вставка» позволяет выполнять преобразование из строки в столбец (или из столбца в строку) буквально за несколько секунд. Этот метод также копирует форматирование ваших исходных данных, чем добавляет еще один плюс в свою пользу.
Однако у этого подхода есть два недостатка, которые не позволяют называть его идеальным решением чтобы перевернуть данные в Excel:
- Он не слишком подходит для вращения полнофункциональных таблиц Excel. Если вы скопируете всю таблицу и затем откроете диалоговое окно «Специальная вставка», то обнаружите, что пункт «Транспонировать» неактивен. В этом случае вам нужно либо скопировать ее без заголовков столбцов, либо сначала преобразовать ее в обычный диапазон.
- Операция Специальная вставка > Транспонировать не связывает новую таблицу с исходными данными. Поэтому она хорошо подходит только для одноразовых преобразований. Всякий раз, когда исходные данные меняются, вам нужно будет повторить процесс и повернуть таблицу заново. Никто не захочет тратить свое время на преобразование одних и тех же строк и столбцов снова и снова, верно?
Как транспонировать таблицу и связать ее с исходными данными
Давайте посмотрим, как вы можете превращать строки в столбцы, используя уже знакомую нам технику специальной вставки, но при этом связывая полученную таблицу с исходным набором данных. То есть, всякий раз, когда вы меняете данные в исходной, перевернутая будет отражать изменения и обновляться соответствующим образом. Чуть выше мы назвали отсутствие такой связи недостатком. А сейчас посмотрим, как этот недостаток можно обойти.
- Скопируйте строки, которые нужно преобразовать в столбцы (или столбцы, которые нужно превратить в строки).
- Выберите пустую ячейку на том же или другом листе.
- Откройте диалоговое окно «Специальная вставка», как описано в предыдущем примере, и нажмите «Вставить связь» в нижнем левом углу.
- Результат будет примерно таким:
- Выберите новую таблицу и откройте диалоговое окно Excel «Найти и заменить» (или нажмите
Ctrl + H
, чтобы сразу перейти на вкладку Заменить). - Замените все знаки «=» на «###» или любые другие символы, которых нет нигде в ваших реальных данных. Таким нехитрым образом мы преобразуем наши формулы-ссылки в текст.
Эта операция превратит ваши данные во что-то немного пугающее, как вы видите на скриншоте ниже. Но не паникуйте – еще 2 шага, и вы достигнете желаемого результата.
- Скопируйте диапазон со значениями «###» в буфер обмена, а затем используйте Специальная вставка > Транспонировать, чтобы преобразовать столбцы в строки.
- Наконец, откройте диалоговое окно «Найти и заменить» еще раз, чтобы отменить изменение, т.е. обратно заменить все «###» на «=», и восстановить ссылки на исходные данные.
Это длинноватое, но элегантное решение, не правда ли? Единственным недостатком этого подхода является то, что исходное форматирование теряется в процессе, и вам нужно будет восстановить его вручную (в дальнейшем в этом руководстве я покажу вам быстрый способ сделать это).
Способ 4. Транспонировать матрицу данных в Excel с помощью макроса VBA
Чтобы автоматизировать преобразование строк в столбцы в Excel, вы можете использовать следующий макрос:
Sub TransposeColumnsRows() Dim SourceRange As Range Dim DestRange As Range Set SourceRange = Application.InputBox(Prompt:="Выделите диапазон для транспонирования", Title:="Транспонирование строк в столбцы", Type:=8) Set DestRange = Application.InputBox(Prompt:="Укажите верхнюю левую ячейку новой таблицы", Title:="Транспонирование строк в столбцы", Type:=8) SourceRange.Copy DestRange.Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Application.CutCopyMode = False End Sub
Чтобы добавить макрос на лист, следуйте инструкциям, описанным в разделе Как вставить и запустить код VBA в Excel .
Примечание. Транспонирование с помощью VBA имеет ограничение в 65536 элементов. Если ваш массив превышает этот предел, дополнительные данные будут автоматически отброшены.
Как использовать макрос для преобразования строки в столбец
Вставив макрос в книгу, выполните следующие шаги, чтобы повернуть таблицу:
- Откройте целевой рабочий лист, нажмите
Alt + F8
, выберите макрос TransposeColumnsRows и нажмите «Выполнить».
- Выберите диапазон, который вы хотите преобразовать, и нажмите OK :
- Выберите верхнюю левую позицию целевого диапазона и нажмите ОК:
Матрица значений транспонирована. Наслаждайтесь результатом
Способ 5. Сводная таблица.
Еще один способ как можно транспонировать таблицу в Excel — с помощью сводной таблицы. К сожалению, этот способ работает только в одном направлении — из столбцов переворачивает данные в строки. Но его преимущество, по сравнению с предыдущими, – это возможность фильтровать данные и использовать всю мощь сводных таблиц.
Сначала необходимо создать сводную таблицу (здесь есть подробная инструкция). Выделяем исходные данные:
Создаем её на новом листе.
В свойствах сводной таблицы отключаем общие и промежуточные итоги по столбцам и строкам.
Перетаскиваем поля в макете таблицы, и получаем результат – таблица повёрнута набок.
Преобразуйте столбцы в строки с помощью инструмента транспонирования
Если вам нужно выполнять преобразования строки в столбец достаточно часто, то возможно, вы действительно ищете более быстрый и простой способ. К счастью, у меня есть такой способ в моем Excel, как и у других пользователей надстройки Ultimate Suite
Позвольте мне продемонстрировать вам, как перенести строки в столбцы в Excel буквально за пару кликов при помощи инструмента транспонирования таблицы:
- Выделите любую отдельную ячейку в таблице, перейдите на вкладку AblebitsTools > Transform и нажмите кнопку Transpose.
- В большинстве случаев настройки по умолчанию работают нормально, поэтому вы просто нажимаете «Транспонировать», ничего не меняя.
Если вы хотите Создать ссылки на исходные данные, чтобы повернутая таблица обновлялась автоматически при каждом изменении исходной таблицы, выберите соответствующий вариант:
Готово! Таблица транспонирована:
Если вам интересно попробовать этот и более 60 других профессиональных инструментов для Excel, я приглашаю вас загрузить пробную версию Ultimate Suite.
Итак, вы можете выбрать для себя любой из этих шести методов транспонирования таблицы в Excel.
Благодарю вас за чтение и надеюсь увидеть вас в нашем блоге!
Приветствую, друзья! Требуется Ваша помощь. Долго думал какой написать заголовок, но думаю из него всё равно ничего не понятно.
Сейчас постараюсь объяснить задачу. Есть некоторое количество строк вида:
А В
Значение 1 1,2,3,…N
Значение 2 1,2,3,…N
…
Значение N 1,2,3,…N
Нужно привести к виду:
А В
Значение 1 1
Значение 1 2
Значение 1 3
Значение 1 …
Значение 1 N
Значение 2 1
Значение 2 2
Значение 2 3
Значение 2 …
Значение 2 N
…
Значение N 1
Значение N 2
Значение N 3
Значение N …
Значение N N
Значений в столбце «А» может быть сколько угодно, значений в строке «В» тоже.
Заранее благодарен за помощь!
Очень часто у пользователей Excel возникает необходимость преобразовать столбцы в строки в какой-либо таблице для удобной работы с ней, а в особенности для построения сводных таблиц. В данной статье я расскажу и покажу, как можно это сделать с помощью VBA.
«Столбцы в строки» с помощью VBA
Для тех, кто не сталкивался с такой «необходимостью», я приведу небольшой пример с двумя таблицами:
Левая таблица — исходная. В ней все данные хранятся в столбцах. Из такой таблицы крайне неудобно будет строить сводную: Excel каждый столбец будет рассматривать как отдельное поле, которое по отдельности надо будет перетаскивать при разработки структуры сводной таблицы. Это не будет большой проблемой, если таких столбцов несколько. А если 12, как в примере? Или 50, или еще больше? Вот в таком случае, максимально удобно будет использовать таблицу, у которой столбцы преобразованы в строки.
Правая таблица — искомая. Именно такой вариант таблицы максимально удобен для построения сводной. И целью моей статьи является показать, как можно преобразовать левую табличку в правую посредством языка VBA.
Стоит отметить, что столбцы в строки можно также преобразовать с помощью надстройки Power Query для Excel, но здесь об этом рассказано не будет. Итак, поехали.
«Столбцы в строки»: разработка формы
Для начала нам необходимо создать форму, с помощью которой мы будем преобразовывать столбцы в строки: выделять исходный диапазон для преобразования, конечную ячейку для вставки новой таблицы, а также вводить количество столбцов, которые необходимо преобразовать. Итак, заходим в меню «Разработчик» и создаем новую форму.
Выделять диапазоны (исходный и конечный) мы будем с помощью элемента управления RefEdit (если данный элемент управления отсутствует на панели инструментов, то его необходимо добавить: щелкните по рабочей форме, затем нажмите «Tools» — «Additional Controls» и поставьте галочку рядом с «RefEdit.Ctrl»). Вводить необходимое количество обрабатываемых столбцов мы будем через элемент TextBox (его переименуем в Clmn_Count для удобства). Также добавляем CommandButton, то есть кнопку, для запуска самого основного макроса. Получается что-то вроде этого:
По нажатию на кнопку «Выполнить преобразование» будет выполняться следующий код:
Private Sub CommandButton1_Click() s1 = RefEdit1.Value s2 = RefEdit2.Value If s1 = "" Then MsgBox "Диапазон не выделен": Exit Sub If s2 = "" Then MsgBox "Начальный диапазон не выделен": Exit Sub Set r1 = Range(s1) 'преобразовываем в диапазон Set r2 = Range(s2) 'преобразовываем в диапазон If (r2.Rows.Count > 1) Or (r2.Columns.Count > 1) Then MsgBox "Конечный диапазон должен состоять из одной ячейки": Exit Sub Prepare Collapse Clmn_Count.Value, r1, r2 'преобразовать столбцы в строки Ended End Sub
Переменным s1 и s2 присваиваем значения полей RefEdit1 и RefEdit2 соответственно. Затем эти переменные проверяются: если они пустые, то уведомляем пользователя и выходим из процедуры, а если с ними все в порядке — преобразовываем их в диапазоны r1 и r2 соответственно. Проверяем второй диапазон на количество столбцов и строк: если этот диапазон не является ячейкой (т.е. строк и столбцов больше 1) — тоже уведомляем пользователя и завершаем процедуру.
Если все проверки пройдены — запускаем поочередно три процедуры:
- Prepare — активация кода оптимизации
- Collapse Clmn_Count.Value, r1, r2 — запуск основной обработки, преобразующей столбцы в строки
- Ended — деактивация кода оптимизации
Пройдемся по каждому из них.
Prepare
Код оптимизации, взятый мной с Хабра. Отключает некоторые функции Excel, ускоряя выполнение макросов:
Public Sub Prepare() Application.ScreenUpdating = False 'отключение обновления экрана Application.Calculation = xlCalculationManual 'отключение автоматического пересчета формул Application.EnableEvents = False 'отключение обработки событий ActiveSheet.DisplayPageBreaks = False 'отключить отображение разрывов страниц Application.DisplayStatusBar = False 'отключить статусную строку в Excel Application.DisplayAlerts = False 'отключить отображение ошибок и предупреждений End Sub
Collapse Clmn_Count.Value, r1, r2
Основной макрос, которые как раз выполняет нужную нам функцию: преобразовывает столбцы в строки. У него есть три аргумента: количество столбцов для преобразования (используется TextBox, который у нас называется Clmn_Count), и два диапазона (исходная табличка и конечная ячейка). Сам по себе макрос довольно сложный для восприятия, но я постараюсь вкратце объяснить его принцип работы на небольшом примере:
Private Sub Collapse(ByVal col_num As Integer, ByVal rng_source As Range, ByVal rng_new As Range) lastrow = rng_source.Row + rng_source.Rows.Count - 1 NewRow = rng_new.Row NewColumn = rng_new.Column k = col_num For q = 1 To (rng_source.Columns.Count - k) 'заполнение заголовков новой таблице по данным старой Cells(NewRow, NewColumn + q - 1) = Cells(rng_source.Row, rng_source.Column + q - 1) Next q lastrow_new = rng_new.Row + 1 'Сдвиг на 1 строку вниз от заголовка основного столбца For i = rng_source.Row + 1 To lastrow 'перебираем все строки исходника Z = rng_source.Column + rng_source.Columns.Count - k 'z - первый столбец свертываемого значения For j = lastrow_new To lastrow_new + k - 1 'транспонируем столбцы в строки For q = 1 To (rng_source.Columns.Count - k) Cells(j, NewColumn + q - 1) = Cells(i, rng_source.Column + q - 1) 'Столбец с основными значениями Next q Cells(j, NewColumn + q - 1) = Cells(rng_source.Row, Z) 'Заголовки свертываемых столбцов в строки Cells(j, NewColumn + q) = Cells(i, Z) 'Значения свертываемых столбцов в строки Z = Z + 1 Next j lastrow_new = lastrow_new + col_num Next i End Sub
- Сначала копируем заголовки, которые у нас статичны (в нашем примере это заголовок «Клиент» и «SKU»)
- Затем берем новую строку исходной таблицы и выполняем определенный алгоритм 3 раза (то есть столько раз, сколько у нас столбцов):
- Копируем строку с наименованиями «Клиента» и «SKU»
- Затем делаем сдвиг на Z столбцов вправо (изначально Z = 1 и наращивается, в нашем случае, до 3)
- Копируем заголовок данного столбца (сначала это «Январь»), а затем соответствующее значение
- Наращиваем Z (для сдвига на следующий месяц), и повторяем все сначала
- Затем спускаемся на новую строку исходной таблицы и повторяем пункт 2 снова, до тех пор, пока не переберем все строки исходной таблицы:
На гифке показан наглядный пример выполнения данного алгоритма. После того, как выполнение макроса завершилось и все столбцы в строки преобразованы — переходим к макросу Ended.
Ended
Включение функций Excel, которые мы отключили с помощью макроса Prepare
Public Sub Ended() Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.DisplayStatusBar = True Application.DisplayAlerts = True End Sub
Заключение
В общем-то, на этом работа завершена. Принцип работы макроса очень прост: вызываем форму, выделяем исходную таблицу с заголовками(!), вводим количество столбцов, которое у нас должно быть преобразовано (как пример: если есть столбцы январь-декабрь, то вводим 12), затем выбираем ячейку, в которую мы хотим вставить исходную таблицу и нажимаем «Выполнить преобразование». И все, столбцы в строки преобразованы.
Преобразовать столбцы в строки: скачать пример
По желанию, можно связать вызов формы с какой-либо кнопкой в документе. Или шагнуть дальше — сделать свою надстройку с возможностью вызова этой формы в совершенно любом файле Excel.
Преобразовать строку со значениями в столбец |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Транспонирование в Excel – преобразуем строки в столбцы и наоборот
Смотрите также: Здравствуйте.Kuzmich 1 To 31 чтобы получить нужную из 5 строк данные.Transpose интернете. Но если столбца из заданнойНа самом деле,
Введите формулу, показанную ниже,Главное преимущество функции с формулами в диалогового окна. раз. Пользуясь этимВыделите первую ячейку диапазона,Транспонирование данных в ExcelПодскажите, пожалуйста, мне,: А где функция ‘ нам ссылку, т.е. и 3 столбцов)Повернув данные, можно удалить(Транспонировать) и нажмите Вы работаете с ссылки на ячейку.
- я вижу только в верхнюю левуюTRANSPOSE
- Excel, и вРезультат будет примерно таким: методом, Вы сохраняете в который Вы
- – это задача, компьютерному чайнику, элементарную
Преобразуем строки в столбцы в Excel при помощи Специальной вставки
=fNew(A1)?Cells(h, 33) = вводим в любую и вводим в исходные.ОК большими таблицами, помните, Например, один – форматирование ячейку конечного диапазона(ТРАНСП): преобразованная таблица частности с функциямиВыделите новые данные и исходные данные, и собираетесь скопировать транспонированные
- знакомая многим пользователям. (для вас, знатоков)l-lisa Cells(1, h) свободную ячейку вот первую ячейку функциюЕсли данные содержат формулы,. что методСТОЛБЕЦ(A3) исходных данных не (допустим, это будет
- сохраняет связь с массива, то, пожалуйста,
- откройте диалоговое окно это ещё один данные. Очень часто после вещь: как сделать: Добрый день, помогите
- Cells(h, 34) = такую формулу:ТРАНСП (TRANSPOSE)
- Excel автоматически обновляетТеперь Ваши столбцы преобразовалисьTransposeвозвратит значение сохраняется. Впрочем, Вы ячейка источником данных, т.е. внимательно следите за
- Excel – аргумент в егоЗамечание: создания сложной таблицы,
так, чтобы данные, пожалуйста заменить формулой Cells(2, h)=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1);СТРОКА(A1)))из категории их в соответствии в строки!в VBA ограничен1 можете легко восстановитьA7 какие бы изменения тем, чтобы выполнятьFind and Replace пользу.
- Важно выбрать ячейку, становится очевидным, что записанные в 4 запятые на переносCells(h, 35) =в английской версии ExcelСсылки и массивы с новым расположением.Точно таким же образом 65536 элементами. Если
- , поскольку столбец его, как это), и нажмите в исходных данных следующие шаги в(Найти и заменить).Однако, вышеописанный метод имеет которая находится за эффективнее было бы столбцах, стали данным, значения в другую Cells(3, h)
- это будет =INDIRECT(ADDRESS(COLUMN(A1),ROW(A1)))(Lookup and Reference) Проверьте, используются ли Вы можете преобразовать Ваш массив выйдетA показано выше.Enter Вы ни вносили,
- точности как написано. Вы также можете два существенных недостатка, пределами диапазона исходных развернуть её для записанными в 4 ячейку, если такоеCells(h, 36) =
А затем копируем (протягиваем): в этих формулах строки в столбцы. за рамки этого– это первыйТеперь Вы понимаете, как: транспонированная таблица такжеВ этом примере мы нажать сочетание которые не позволяют
данных, чтобы скопированная более удобного анализа строки (что необходимо возможно Cells(4, h) формулу на соседниеПосле ввода функции необходимо абсолютные ссылки. Если Вот небольшой пример: ограничения, то все столбец. Как не работает функция=INDIRECT(ADDRESS(COLUMN(A1),ROW(A1))) будет изменяться. будем преобразовывать таблицу,Ctrl+H считать его идеальным область и область
или построения диаграммы мне для построенияЗачем дублируете темы?Cells(h, 37) = ячейки как обычно нажать не Enter,
- нет, перед поворотомПосле копирования и специальной лишние данные будут трудно догадаться, функцияINDIRECT=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1);СТРОКА(A1)))Форматирование начальной таблицы не в которой перечислены, чтобы сразу попасть решением для транспонирования вставки не пересеклись. по имеющимся данным. диаграммы). Данных более Темы объединяю, а Cells(5, h) черным крестом. В а данных можно сделать вставки с включенным
- молча потеряны.ROW(ДВССЫЛ), и, возможно,Если данные начинаются не сохранится в преобразованной штаты США с на вкладку данных в Excel. Например, если исходныеВ этой статье Вы 500 в каждом Вам замечаниеNext h итоге должно получитьсяCtrl+Shift+Enter абсолютные ссылки относительными.
Как транспонировать таблицу, ссылающуюся на исходные данные
параметромУрок подготовлен для Вас(СТРОКА) работает точно захотите более подробно в строке с таблице, как это данными о населении:ReplaceДанный инструмент не доступен данные состоят из найдёте несколько способов столбце, так чтоpabchekEnd Sub примерно следующее:, чтобы ввести ееЕсли данные хранятся вTranspose
- командой сайта office-guru.ru так же, только разобраться, что на номером видно на рисунке
- Во-первых, необходимо определить точное(Заменить). при копировании /
- 4 столбцов и преобразовать строки в вручную переписывать долго.: Здравствуйте! Так надо?excelhelprusТ.е. при копировании формулы сразу во все таблице Excel, функция(Транспонировать) строки преобразовалисьИсточник: https://www.ablebits.com/office-addins-blog/2014/03/06/transpose-excel-rows-columns/ для строк.
- самом деле делает1 выше. количество строк иЗамените все символы равно вставке полнофункциональной таблицы 10 строк, то столбцы (или столбцыP. S. Пользуюсь200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИОШИБКА(ПСТР(A$2;ПОИСК(«ёё»;ПОДСТАВИТЬ(A$2;»,»;»ёё»;СТРОКА(A1)))-8;8);ПРАВБ(A$2;8)): В Excel есть вниз по столбцу,
- выделенные ячейки какТранспонировать в столбцы.Перевел: Антон АндроновА теперь позвольте напомнить эта формула ии не вЕсли какие-то ячейки начальной столбцов в таблице. « Excel в отличие транспонированная таблица будет в строки) в экселем в OfficeНо чувствую, что опция при вставке. она выдает ссылку,формулу массивабудет недоступна. В
- Это отличный способ расположитьАвтор: Антон Андронов всю формулу, которую почему мы использовали столбце таблицы были пусты, В нашем примере= от простого диапазона. состоять из 10 Excel. Эти решения
- как 2003, так будут дополнительные условия Называется транспонировать. Если которая уходит вправо. Если раньше не этом случае вы информацию на листеИногда мы аккуратно и мы использовали для комбинацию с функциейA
то в транспонированных это 7 столбцов» на « В этом случае столбцов и 4 работают во всех и 2007 (вдруг :) нужно в макросе по строке и сталкивались с формулами можете сначала преобразовать Excel так, как
Транспонируем данные в Excel при помощи формул
старательно вводим данные преобразования строк вADDRESS, то потребуется немного ячейках там будут и 6 строк,
Преобразуем в Excel строки в столбцы при помощи функции TRANSPOSE (ТРАНСП)
ххх Вам придётся скопировать строк. версиях Excel (2013, в каком-либо пакетеjakim — используйте ее наоборот. Чего и массивов, то советую таблицу в диапазон Вам нужно. в столбцах Excel столбцы на листе(АДРЕС). Если технические более сложная формула: нули.
включая заголовки. Запомним«. На самом деле таблицу без заголовков,Вставьте скопированные данные при 2010, 2007 и
нужной функции нет).: А «Текст по с макрорекордером. Будет требовалось.почитать тут с помощью командыУрок подготовлен для Вас и только к Excel: детали Вас не
- =INDIRECT(ADDRESS(COLUMN(A1)-COLUMN($A$1)+ROW($A$1),ROW(A1)-ROW($A$1)+COLUMN($A$1)))Вы не сможете редактировать эти цифры и Вы можете заменить либо преобразовать её
- помощи команды более ранних), охватываютЗаранее спасибо всем, столбцвм» и транспонирование явно быстрее иПлюсы- это весьмаПреобразовать в диапазон командой сайта office-guru.ru концу понимаем, что=INDIRECT(ADDRESS(COLUMN(A1),ROW(A1))) интересуют, следующий раздел=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1)-СТОЛБЕЦ($A$1)+СТРОКА($A$1);СТРОКА(A1)-СТРОКА($A$1)+СТОЛБЕЦ($A$1))) ячейки в преобразованной приступим к преобразованию
- их на любые в диапазон, т.е.Paste Special множество возможных сценариев,
- кто поможет советом. через спецальную вставку удобнее чем в: сохраняются связи между экзотический, но оченьна вкладкеИсточник: http://www.howtogeek.com/howto/12366/convert-a-row-to-a-column-in-excel-the-easy-way/ гораздо удобнее расположить=ДВССЫЛ(АДРЕС(СТОЛБЕЦ(A1);СТРОКА(A1)))
Вы можете пропустить.
Где
таблице, поскольку функция строк в столбцы. другие символы, которых кликнуть правой кнопкой(Специальная вставка) > объясняют наиболее типичные
- Vlanib не подойдёт. вашем коде)
таблицами, можно легко мощный инструмент вТаблицаПеревел: Антон Андронов их горизонтально, т.е.Как видите, в функцииФункцияA1TRANSPOSEПосчитайте ячейки, которые Вы
нет в рассматриваемом мыши по любойTranspose ошибки и показывают: Выделяете диапазон с
Преимущества функции TRANSPOSE (ТРАНСП)
МВТexcelhelprus вносить изменения во Excel.или воспользоваться функциейАвтор: Антон Андронов не в столбцах,ADDRESSINDIRECT– это левая
Недостатки функции TRANSPOSE (ТРАНСП)
- (ТРАНСП) чрезвычайно зависима хотите транспонировать. В диапазоне. ячейке таблицы и(Транспонировать). Вы можете
- хорошие примеры использования данными, Ctrl+C, выделить: Можно так, только: вторую таблицу.
- Плюсы ТРАНСП, чтобы повернутьПри наличии листа с а в строках.(АДРЕС) мы задаём(ДВССЫЛ) служит для верхняя ячейка таблицы-источника. от источника данных. нашем случае этоЭто превратит Вашу таблицу в контекстном меню открыть диалоговое окно в Excel формул ячейку куда записать
поменяйте (если нужно)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sheets(«Лист1»).Range(«E2:E4»).CopyМинусы: между таблицами сохраняется строки и столбцы. данными в столбцах, Да, ради этого сначала столбец, а создания непрямой ссылки Также обратите внимание
Преобразовываем строку в столбец или столбец в строку при помощи функции INDIRECT (ДВССЫЛ)
Если Вы сделаете 7 столбцов и в нечто слегка выбратьPaste Special для транспонирования. измененные данные, правой адрес ячеек откудаSheets(«Лист2»).Range(«H8»).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,: форматирование не сохраняется, связь, т.е. измененияЕсли вам требуется часто
которые нужно повернуть, стоило потрудиться, чтобы затем строку, и на ячейку. Например, на использование абсолютных попытку изменить какую-либо 6 строк. пугающее (смотри рисунокTable(Специальная вставка) тремяПреобразовываем строки в столбцы клавишей меню - берутся данные и SkipBlanks:= _
но его можно в первой таблице поворачивать данные для чтобы упорядочить строки, понять, что с в этом кроется если Вы хотите и относительных ссылок. ячейку, то получитеВыберите пустой диапазон ячеек. ниже), но не(Таблица) >
- способами: методом Копировать > специальная вставка - куда они вставляютсяFalse, Transpose:=True легко воспроизвести тут же отражаются просмотра под разными можно использовать функцию
самого начала надо
весь фокус! Помните,
поместить значение ячейкиСкопируйте формулу на весь сообщение с предупреждением: Так как функция тревожьтесь, осталось всегоConvert to RangeНа вкладке Вставить опция транспонировать внизу.
200?'200px':''+(this.scrollHeight+5)+'px');">Sub tt()
Ckaym
Специальной вставкой во второй. углами, стоит создатьТранспонирование было делать всё что функцияB1
- диапазон, в которыйYou cannot change partTRANSPOSE 2 действия, и(Преобразовать в диапазон).HomeТранспонируем таблицу при помощиSerge 007
Dim arr, arr1,: Спасибо такой вариант(вставить толькоМинусы сводную таблицу. С. Она позволяет повернуть наоборот! Не спешитеADDRESS
в ячейку Вы собираетесь поместить of an array(ТРАНСП) меняет вертикальное Вы получите желаемый
- Более серьёзное ограничение этого
- (Главная) в разделе
- копирования / вставки: Здравствуйте. i As Long, мне не подходитФормат: не сохраняется форматирование, ее помощью вы
данные из столбцов удалять проделанную работу(АДРЕС) понимает первоеA8 транспонированные данные, протянув(Нельзя изменять часть на горизонтальное измерение результат. метода состоит вClipboard
ссылок на исходныеФиалочка j As Long лист будет менятьсяс флажком пустые ячейки из сможете быстро свести в строки и и начинать всё число как номер, то записываете в за маркер автозаполнения
массива). диапазона, значит нужноСкопируйте таблицу с символами том, что он(Буфер обмена), нажмите данные, можно воспользоваться способомConst From = по месяцам при
Транспонировать первой таблицы отображаются данные, перетащив поля наоборот. заново. В Excel строки, а второе ячейку в правом нижнемИ в завершение, какой выбрать такое количество « создаёт копию исходных маленькую чёрную стрелкуТранспонируем данные в Excel предложенным
Функции INDIRECT (ДВССЫЛ) и ADDRESS (АДРЕС) – синтаксис и логика
«G1», StartRow = переходе в форму!Ирина в виде нулей из области строкНапример, если данные выглядят есть простой способ число как номерA8 углу выделенной ячейки бы хорошей и строк и столбцов,ххх данных, и, если
под кнопкой
при помощи формул
Vlanib 4, StartColumn =а вот второй: выделить, скопировать, встать во второй, нельзя в область столбцов так, как показано транспонировать всю таблицу столбца. Другими словами,следующую формулу: (или диапазона ячеек). простой ни была сколько столбцов и» и выполните команду они изменятся, ВамPasteПредположим, Вы создали таблицу
, или, если нет 6 ответ сейчас посмотрю! на строку, правой редактировать отдельные ячейки (и наоборот) в ниже, где продажи целиком и сохранить функция=INDIRECT(«B1»)
Вот и всё! В функция строк соответственно имеетPaste Special придётся повторять процесс(Вставить) и выберите на листе Excel, желания каждый разarr = Split(Replace(Range(From),excelhelprus кнопкой мыши - во второй таблице, списке полей сводной
по регионам указаны структуру.ADDRESS=ДВССЫЛ(«B1») Вашей новой таблицеTRANSPOSE Ваша исходная таблица.(Специальная вставка) > и транспонировать таблицу команду похожую на ту, вручную копировать исходный » «, «»),: Это 1 и специальная вставка - поскольку формулу массива таблицы. в верхней части
В этой статье мы(АДРЕС) берёт номерНо реальная сила функции все столбцы преобразованы(ТРАНСП), ей не В нашем примере
Transpose
снова. Никто не
Transpose что показана в диапазон и жать «;») тот же способ) транспортировать можно менять толькоХотим, упрощенно говоря, повернуть листа, а продажи приводим примеры и столбца, возвращённый функциейINDIRECT в строки. Однако, хватает гибкости, и мы выбираем 6(Транспонировать), чтобы преобразовать захочет тратить своё(Транспонировать). верхней части рисунка, кнопки, то можноApplication.ScreenUpdating = False просто код -Татьяна целиком. таблицу на бок, по кварталам — снимки экрана из
COLUMN(ДВССЫЛ) в том, транспонированные ячейки выглядят поэтому она становится столбцов и 7
- столбцы в строки драгоценное время наКликните правой кнопкой мыши расположенного ниже. Названия воспользоваться формулами (см.For i = это отображение функции
- : данные столбца выделить,Этот способ отчасти похож т.е. то, что в левой части
- версии Excel 2010(СТОЛБЕЦ), и превращает что она может очень плоско и не лучшим решением строк.
(или строки в
Транспонируем данные при помощи макроса VBA
то, чтобы преобразовывать по ячейке, в стран распределены по вложение). 0 To UBound(arr) траспонирования в макросе. скопировать, поставить курсор не предыдущий, но располагалось в строке листа. х64. В других его в номер превратить любую текстовую скучно по сравнению во многих ситуациях.Нажмите столбцы). одни и те которую нужно вставить столбцам, но списокА вот тут
arr1 = Split(arr(i), Почему не подходит
к началу строки,
позволяет свободно редактировать
— пустить по
office-guru.ru
Как преобразовать столбец в строку в Excel – простой способ
Вы можете повернуть столбцы версиях, начиная с строки, затем берёт строку в ссылку, с исходными данными.Этот метод очень похожF2Снова откройте диалоговое окно же строки и данные, и в стран может оказаться у Вас возникнет «=») — совсем не правой кнопкой мышки значения во второй столбцу и наоборот: и строки, чтобы Excel 2003, этот номер строки и в том числеНо не расстраивайтесь, это
на предыдущий. Его, чтобы перейти вFind and Replace столбцы по нескольку контекстном меню выберите очень длинным, поэтому сложность с 2003For j = понятно вызвать контекстное меню таблице и вноситьВыделяем и копируем исходную
Преобразовываем столбец в строку
отобразить кварталы в приём работает аналогично, превращает его в
строку, которую Вы вовсе не проблема. главное преимущество перед режим редактирования.(Найти и заменить), раз. Согласны?Paste Special нам будет гораздо Excel. 0 To 1excelhelprus — специальная вставка в нее любые таблицу (правой кнопкой верхней части листа, но могут быть
номер столбца, то создаёте при помощи Вот как можно функциейЗапишите функцию чтобы заменить всеДавайте посмотрим, как можно(Специальная вставка) >
удобнее преобразовать столбцыТак как онCells(StartRow + i,: — там надо правки при необходимости. мыши - а регионы —
отличия в интерфейсе, есть меняет местами
других функций и легко восстановить исходноеTRANSPOSETRANSP
символы « преобразовать строки вTranspose в строки, чтобы ограничен числом столбцов StartColumn + j)
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub В_Столбец_2() поставить галочку «транспонировать». Для создания ссылокКопировать
сбоку. структуре меню и
строки и столбцы.
значений других ячеек.
форматирование:
office-guru.ru
Транспонирование данных из строк в столбцы (или наоборот) в Excel для Mac
(ТРАНСП) состоит вOSEххх столбцы в Excel(Транспонировать). таблица уместилась на256 = CDbl(arr1(j))Sheets(«Лист1»).Range(«A1:AE5»).CopyАлександра белкина
на строки и). Затем щелкаем правойВот как это сделать. диалоговых окнах.Теперь, когда Вы знаете, Именно это мыСкопируйте исходную таблицу. том, что он(ТРАНСП) и укажите
» на « при помощи уже(наконец, самый быстрый способ) экране., то ни транспонированием,Next
Sheets(«Лист2»).Range(«A1»).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
-
: Чтобы всю таблицу столбцы нам понадобятся по пустой ячейке,Выделите диапазон данных, которыйИтак, у нас имеется что делает каждая и собираемся сейчасВыделите транспонированную таблицу. оставляет возможность изменять
в скобках диапазон= знакомой нам техники НажмитеВыделите строки и столбцы, ни формулами запихнуть
-
Next SkipBlanks:= _ преобразовать, т. е. четыре функции из куда хотим поместить требуется переупорядочить, включая вот такая таблица функция, давайте сведём сделать. Если ВыКликните по выделенной области данные в транспонированной
данных, который нужно«, т.е. восстановить ссылкиКопироватьCtrl+Alt+V которые требуется поменять»…строк более 500…»
-
Application.ScreenUpdating = TrueFalse, Transpose:=True
Советы по транспонированию данных
-
столбцы сделать строками, категории повернутую таблицу и заголовки строк или Excel: воедино логику всей поймёте это, то правой кнопкой мыши таблице, при этом транспонировать. В нашем
-
на исходные ячейки.>, выберите опцию местами. Если Выв 256 столбцовEnd SubEnd Sub а строки столбцами,Ссылки и массивы выбираем из контекстного столбцов, а затемДанные расположены в двух формулы: всё остальное поймёте
-
и в разделе сохраняя связь с случае это будет Готово!ВставитьTranspose хотите развернуть всю не получится…l-lisaexcelhelprus надо выделить ее,: меню команду
support.office.com
Превращение строк в столбцы и обратно
Постановка задачи
на вкладке столбцах, но мыфункции с лёгкостьюPaste Options исходной таблицей.
Способ 1. Специальная вставка
выглядеть так:Быстрое, спокойное и элегантное, так, чтобы транспонированные(Транспонировать) и кликните таблицу целиком, т.е.javvva: Спасибо, очень хороший: это конкретно для скопировать в буферФункцияСпециальная вставка (Paste Special)Главная хотим сделать таблицуCOLUMNДумаю, Вы помните, что(Параметры вставки) выберитеВ этом примере мы
=TRANSPOSE($A$1:$G$6) решение, не так данные ссылались наОК все ячейки с: а по мне макрос! Только как вашего файла -
обмена (проще правойАДРЕС(номер_строки; номер_столбца). В открывшемся диалоговомвыберите команду
Способ 2. Функция ТРАНСП
горизонтальной и расположить(СТОЛБЕЦ) и в формуле мыFormatting будем использовать небольшую=ТРАНСП($A$1:$G$6) ли? Единственный недостаток исходные данные. Главное. данными на листе, так для того можно его применить вставляет ваш календарик кнопкой мыши на - выдает адрес окне ставим галочку
Копировать те же данные,ROW использовали ещё 3(Форматирование). таблицу, чтобы ВыЗамечание: этого подхода состоит преимущество такого подходаЗамечание: нажмите чтобы сделать диаграмму на большое количество на лист 2 выделенной таблице щелкнуть ячейки по номеру
Транспонировать (Transpose)или нажмите CTRL+C. но в двух(СТРОКА) возвращают номера функции –Подводя итог, метод с
могли сосредоточить своеВсегда используйте абсолютные в том, что в том, чтоЕсли Вы транспонируетеCtrl+Home не обязательно переделывать ячеек? начиная с ячейки и выбрать Копировать). строки и столбца
Способ 3. Формируем адрес сами
и жмемПримечание: строках. Выделите ячейки, столбца и строкиADDRESS функцией внимание на процессе ссылки для работы в процессе выполнения при изменении данных ячейки, содержащие формулы,, а затем всю таблицу. хотяМВТ
- А1 Таблица выделится пунктирной на листе, т.е.ОК Обязательно скопируйте данные. Это которые необходимо преобразовать. соответственно;(АДРЕС),INDIRECT
- транспонирования, а не с функцией форматирование исходной таблицы в исходной таблице, убедитесь, что воCtrl+Shift+End
- я могу ошибаться:Ckaym мигающей границей. Потом АДРЕС(2;3) выдаст, например,. не получится сделать Затем щелкните правойфункцияCOLUMN
(ДВССЫЛ) кажется более на данных вTRANSPOSE будет потеряно, и транспонированная таблица обновится всех этих ячейках
.
(не так частоl-lisa
: Да все спасибо выделяете ячейку, в ссылку на ячейкуМинусы с помощью команды кнопкой мыши и
ADDRESS(СТОЛБЕЦ) и сложным решением задачи таблице. Мы будем(ТРАНСП). Вам придётся восстанавливать и отразит эти
использованы абсолютные ссылкиСкопируйте выделенные ячейки. Для приходилось делать диаграммы)., много ячеек - получилось
которую хотите вставить C2.: не всегда корректноВырезать выберите пункт(АДРЕС) меняет местамиROW по преобразованию строк использовать немного замысловатую
planetaexcel.ru
Как в экселе данные столбца перенести в строку
Нажмите его вручную (далее изменения. (со знаком $). этого на выбор:Фиалочка
это как?200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub В_Столбец() преобразованную таблицу, правойФункция копируются ячейки сили клавиш CONTROL+X.Copy строку и столбец;(СТРОКА).
в столбцы, чем комбинацию функцийCtrl+Shift+Enter в этом урокеСкопируйте строки, которые Вы Это необходимо, посколькукликните по ним правой: Спасибо большое каждому,l-lisam_ = Format(Date, кнопкой щелкаете поДВССЫЛ(ссылка_в_виде_текста) формулами, нет связиВыделите первую ячейку диапазона,(Копировать) или простофункцияФункция с функциейINDIRECT. я покажу быстрый хотите преобразовать в формулы также будут
кнопкой мыши и
Как преобразовать строку в столбец на другом листе (Макросы/Sub)
кто ответил. Ваши: ну то есть «M»)
ней, выбираете колманду- преобразует текстовую между таблицами (изменение в который требуется
нажмите
INDIRECTADDRESSTRANSPOSE
(ДВССЫЛ) иЗамечание:
способ сделать это). столбцы (или столбцы,
транспонированы, а ссылки выберите
советы и уж столбец G может
Sheets("Табель").Range("A1:AE5").Copy Специальная вставка, в
строку, например, "F3"
данных в первой
вставить данные, аCtrl+C(ДВССЫЛ) выводит перевернутые(АДРЕС) используется для(ТРАНСП).ADDRESSОбязательно нажмитеЕсли Вы не ищите которые хотите преобразовать на ячейки автоматически
Copy тем более таблица быть заполнен на
Sheets(m_ + 2).Range("A1").PasteSpecial появившемся диалоговом окне
в настоящую ссылку
таблице не повлияет затем на вкладке. данные в другую того, чтобы получитьПреимущества:
(АДРЕС).Ctrl+Shift+Enter
лёгких путей, то в строки). обновлены.(Копировать) в контекстном оччень помогли. n-строк и в Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= установите флажок Транспонировать, на ячейку F3.
на вторую).ГлавнаяТеперь щелкните правой кнопкой
ячейку на листе
адрес ячейки изВы можете спокойно
Предположим, у Вас есть
, поскольку это формула
можете использовать формулыВыберите пустую ячейку наКак Вы только что меню.P. S. Честно, каждой строке может _
затем ОК илиФункцииПлюсы
щелкните стрелку рядом
мыши в ячейке, Excel.
номеров строки и
редактировать любую ячейку данные в 4 массива. Если для
для преобразования столбцов
этом же или
увидели, опция
excelworld.ru
Преобразовать строку со значениями в столбец (Макросы/Sub)
нажмите очень боялась, что находиться >1 равенствFalse, Transpose:=True Enter на клавиатуре.СТРОКА(ячейка): в транспонированной таблице с командой
где требуется поместитьСовсем не страшно, правда? столбца, заданных Вами.
(ячейки) в транспонированной столбцах ( ввода формулы просто в строки и другом листе.TransposeCtrl+C
засмеют за такие как в файлеEnd Sub
Удачи!и
сохраняется исходное форматирование
Вставить преобразованные данные иНе составит труда написать
Запомните: сначала строка, таблице, при этомA нажать наоборот.
Откройте диалоговое окно(Транспонировать) в Excel. глупые вопросы, а,МВТВопрос закрыт
Ckaym
СТОЛБЕЦ(ячейка) ячеек.и выберите пункт
выберите из контекстного скрипт, который будет потом столбец. Например, она будет оставаться
–EnterКак можно понять из
Paste Special
позволяет преобразовать строкинажмите кнопку
оказывается, народ здесь: Забираете в массив
l-lisa: Всем доброго времени
- выдают номерВыделяем нужное количество пустыхТранспонировать
меню пункт
транспонировать строки в
АДРЕС(8;1)
связанной с таблицей-источником
D, то она работать её названия, функция(Специальная вставка), как в столбцы (илиCo
вот какой терпимый значения строк из: Добрый день, помогите суток. строки и столбца
ячеек (т.е. если,.Paste Special столбцы, при условии,возвратит и будет автоматически) и в 5 не будет.
TRANSPOSE было показано в столбцы в строки)py и помогающий. диапазона .CurrentRegion, а пожалуйста, преобразовать данныеКак преобразовать несколько
excelworld.ru
Данные из столбцов в строки.
для заданной ячейки, например, исходная таблица
Выберите место на листе,(Специальная вставка): что Вы достаточно$A$8 обновляться каждый раз, строках (Готово! Наши данные транспонированы,(ТРАНСП) специально разработана предыдущем примере, и буквально за несколько(Копировать) на вкладкеRuMaSs дальше перебираете по из ячейки перечисленные
строк с Листа1 например =СТРОКА(A3) выдаст была из 3 где достаточно местаВ открывшемся диалоговом окне хорошо владеете VBA.
. когда Вы будете
1 7 столбцов превратились для транспонирования данных нажмите секунд. Уверен, чтоHome: очереди и разбиваете,
через запятую, в в столбец на
1, а =СТОЛБЕЦ(А3) строк и 5 для вставки данных.Paste special Если нет, тоФункция вносить изменения в– в 6 столбцов, в Excel. ЕслиPaste Link
этот способ очень(Главная) в разделеSerge 007 как в предыдущем
отдельные ячейки, как Лист2. выдаст 3. столбцов, то выделить Скопированные данные заменят(Специальная вставка) выберите можете найти множествоCOLUMN
исходные данные.5 что и требовалось у Вас нет(Вставить связь) в полезен, когда требуетсяClipboard? спасибо. помогла макросе
в примере в200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub В_Столбец()Теперь соединяем эти функции, обязательно нужно диапазон любые уже существующие пункт
готовых макросов в(СТОЛБЕЦ) возвращает номерНедостатки:): получить. большого опыта работы нижнем левом углу
транспонировать таблицу один(Буфер обмена). информация.Фиалочка файле
CyberForum.ru
For h =
You should avoid using Copy and Paste — if something else takes the focus while you are doing that then the data will not be pasted into your work book. It’s not a robust method and can take a long time.
You should convert the Range of data into an array, transpose the array and then set the value of an appropriate Range to that transposed array.
For example if you have a spreadsheet set up like this
Col A Col B CTR 22/2/22 CTR 28/2/22 CTR 31/3/22
Use this code to change it to
Col A Col B Col C Col D CTR 22/2/22 28/2/22 31/3/22
and to get rid of the rest of the data
Public Sub demo() Dim lRows As Long lRows = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, "A").End(xlUp).Row Dim arrDemo As Variant arrDemo = ThisWorkbook.Sheets(1).Range("B1:B" & CStr(lRows)).Value Dim arrTransposed As Variant arrTransposed = Application.WorksheetFunction.Transpose(arrDemo) Range("B1").Resize(1, lRows).Value = arrTransposed ThisWorkbook.Sheets(1).Range("A2:B" & CStr(lRows)).ClearContents End Sub