Перенос строки в excel - Учим Эксель

Конвертировать; столбцы в строки; в Excel через VBA

Конвертировать «столбцы в строки» в Excel через VBA

Весьма нередко у юзеров Excel возникает необходимость конвертировать столбцы в строки в какой-нибудь таблице для комфортной работы с ней, а в индивидуальности для построения сводных таблиц. В данной статье я расскажу и покажу, как можно это создать при помощи VBA.

«Столбцы в строки» при помощи VBA

Для тех, кто не сталкивался с таковой «необходимостью», я приведу маленькой пример с 2-мя таблицами:

Столбцы в строки - пример

Левая таблица — начальная. В ней все данные хранятся в столбцах. Из таковой таблицы очень неловко будет строить сводную: Excel любой столбец будет разглядывать как отдельное поле, которое по отдельности нужно будет перетаскивать при разработки структуры сводной таблицы. Это не будет большенный неувязкой, если таковых столбцов несколько. А если 12, как в примере? Либо 50, либо еще более? Вот в таком случае, очень комфортно будет употреблять таблицу, у которой столбцы преобразованы в строки.

Правая таблица — разыскиваемая. Конкретно таковой вариант таблицы очень комфортен для построения сводной. И целью моей статьи является показать, как можно конвертировать левую табличку в правую средством языка VBA.

Необходимо отметить, что столбцы в строки можно также конвертировать при помощи надстройки Power Query для Excel, но тут о этом поведано не будет. Итак, поехали.

«Столбцы в строки»: разработка формы

Для начала нам нужно сделать форму, при помощи которой мы будем преобразовывать столбцы в строки: выделять начальный спектр для преобразования, конечную ячейку для вставки новейшей таблицы, также вводить количество столбцов, которые нужно конвертировать. Итак, заходим в меню «Разраб» и создаем новейшую форму.

Интересно почитать:  Удалить пустые строки эксель

Выделять спектры (начальный и конечный) мы будем при помощи элемента управления RefEdit (если данный отран управления отсутствует на панели инструментов, то его нужно добавить: щелкните по рабочей форме, потом нажмите «Tools» — «Additional Controls» и поставьте галочку рядом с «RefEdit.Ctrl»). Вводить нужное количество обрабатываемых столбцов мы будем через элемент TextBox (его переименуем в Clmn_Count для удобства). Также добавляем CommandButton, другими словами клавишу, для пуска самого основного макроса. Выходит что-то вроде этого:

Столбцы в строки: рабочая форма

По нажатию на клавишу «Выполнить преобразование» будет производиться последующий код:

Переменным s1 и s2 присваиваем значения полей RefEdit1 и RefEdit2 соответственно. Потом эти переменные проверяются: если они пустые, то уведомляем юзера и выходим из процедуры, а если с ними все в порядке — преобразовываем их в спектры r1 и r2 соответственно. Проверяем 2-ой спектр на количество столбцов и строк: если этот спектр не является ячейкой (т.е. строк и столбцов больше 1) — тоже уведомляем юзера и завершаем функцию.

Если все проверки пройдены — запускаем попеременно три процедуры:

  1. Prepare — активация кода оптимизации
  2. Collapse Clmn_Count.Value, r1, r2 — пуск главный обработки, модифицирующей столбцы в строки
  3. Ended — деактивация кода оптимизации

Пройдемся по любому из их.

Prepare

Код оптимизации, взятый мной с Хабра. Отключает некие функции Excel, ускоряя выполнение макросов:

Collapse Clmn_Count.Value, r1, r2

Главный макрос, которые как раз делает подходящую нам функцию: преобразовывает столбцы в строки. У него есть три аргумента: количество столбцов для преобразования (употребляется TextBox, который у нас именуется Clmn_Count), и два спектра (начальная табличка и конечная ячейка). Сам по для себя макрос достаточно непростой для восприятия, но я постараюсь кратко разъяснить его механизм работы на маленьком примере:

Интересно почитать:  Как в excel построить кривую нормального распределения

Столбцы в строки: таблица для примера

  1. Поначалу копируем заглавия, которые у нас статичны (в нашем примере это заголовок «Клиент» и «SKU»)
  2. Потом берем новейшую строчку начальной таблицы и исполняем определенный метод 3 раза (другими словами столько раз, сколько у нас столбцов):
    • Копируем строчку с наименованиями «Клиента» и «SKU»
    • Потом делаем сдвиг на Z столбцов на право (вначале Z = 1 и нарастает, в нашем случае, до 3)
    • Копируем заголовок данного столбца (поначалу это «Январь»), а потом соответственное значение
    • Наращиваем Z (для сдвига на последующий месяц), и повторяем все поначалу
  3. Потом спускаемся на новейшую строчку начальной таблицы и повторяем пункт 2 опять, до того времени, пока не переберем все строки начальной таблицы:

На гифке показан приятный пример выполнения данного метода. Опосля того, как выполнение макроса закончилось и все столбцы в строки преобразованы — перебегаем к макросу Ended.

Ended

Включение функций Excel, которые мы отключили при помощи макроса Prepare

Заключение

В общем-то, на этом работа завершена. Механизм работы макроса весьма прост: вызываем форму, выделяем начальную таблицу с заголовками(!), вводим количество столбцов, которое у нас обязано быть преобразовано (как пример: если есть столбцы январь-декабрь, то вводим 12), потом избираем ячейку, в которую мы желаем вставить начальную таблицу и жмем «Выполнить преобразование». И все, столбцы в строки преобразованы.

По желанию, можно связать вызов формы с какой-нибудь клавишей в документе. Либо шагнуть далее — создать свою надстройку с возможностью вызова данной для нас формы в совсем любом файле Excel.

Загрузка продуктов в заказ клиента из Excel. УТ 11.4, КА 2.4

  • 124444.png
  • image (56).png
  • image.png

Наружная обработка табличной части документа "Заказ клиенту" для конфигурации УТ11, КА2.4.
Создана для загрузки в т.ч. продуктов данные из файлов xls, xlsx, ods.
Загрузка происходит в два шага:

Интересно почитать:  Как закрепить верхнюю строку в excel при прокрутке

1. Наполнение таблицы на форме обработки для вероятной корректировки и проверки.
2. Перенос в документ "заказ клиента".

Поиск номенклатуры происходит по артикулу, если не найдена по артикулу, тогда по наименованию.
Поиск единицы измерения происходит по наименованию и обладателю. (Если не отыскал то употребляется ед. хранения)
Загружать файлы можно с клиента (в схожих обработках такового варианта не отыскал).
Цены заполняются по данным соглашения (если требуется загружать цены из файла — требуется доработать.)

Протестировано на платформе 1С:Предприятие 8.3 (8.3.18.1289)
Конфигурации : Управление торговлей 11.4.13.275 и Всеохватывающая автоматизация 2.4.13.209

"Устанавливается из НСИ и администраитрование" — "Печатный формы отчеты и обработки" — "доп отчеты и обработки".

Предпосылки приобрести

Автоматизирует ручной копипаст из экселя в табличный документ.
На форме есть условное оформление номенклатуры которая не сопоставлена.
Возможность хоть какой доработки — код открыт.

Плюсы

1. Не требуется установленный Excel. Все делается средствами 1С.
2. Работает с файлами в клиент-серверном режиме (можно загружать файлы с локальной машинки.).
3. Скорость работы.
4. Не просит конфигурации конфигурации и загрузки расширений.

Гарантия возврата средств

ООО «Инфостарт» гарантирует Для вас 100% возврат оплаты, если программка не соответствует заявленному функционалу из описания. Средства можно возвратить в полном объеме, если вы заявите о этом в течение 14-ти дней со денька поступления средств на наш счет.

Программка так испытана в работе, что мы с полной уверенностью можем отдать такую гарантию. Мы желаем, чтоб все наши покупатели оставались довольны покупкой.

Ссылка на основную публикацию
Adblock
detector