О том, как при помощи несложного макроса VBA в программе «Эксель» можно разместить данные из таблицы в две колонки для распечатки на принтере.

О том, как при помощи несложного макроса VBA в программе «Эксель» можно разместить данные из таблицы в две колонки для распечатки на принтере.

Приведенный в статье макрос является альтернативой опции «колонки» используемой в настройках «разметки страницы» программы Word .

Рассмотрим для примера таблицу с перечнем товаров хранящихся на складах. В данной таблице существует 4 столбца: номер подпункта, наименование товара, артикулярный номер товара на складе и место хранения (наименование склада).

№ п.п. Наименование товара Артикул Место размещения 1 Яблоки 112 Склад №1 2 Щетка 18 445 Склад №4 3 Шаурма 65 631 Склад №3 4 Черничное варенье 31 754 Склад №5 5 Черника 30 544 Склад №4 6 Чаша 77 730 Склад №3 7 Чайный набор 40 223 Склад №2 8 Чай 58 372 Склад №2 9 Филе бобра 28 124 Склад №2 10 Тунец 52 322 Склад №2 11 Томаты 55 952 Склад №5 12 Тара Пластиковая 8 766 Склад №1 13 Сыр 63 211 Склад №1 14 Сывородка 64 421 Склад №2 15 Суши 46 273 Склад №2 16 Сливки 60 792 Склад №4 17 Слива 11 112 Склад №5 18 свежий карп 25 705 Склад №5 19 Сахар 41 433 Склад №3 20 Рыбий жир 26 914 Склад №1 21 Рыба мороженная 24 495 Склад №4 22 Поводок для собаки 20 865 Склад №1 23 Поводок для кошки 19 655 Склад №5 24 Пакет пластиковый 13 606 Склад №5 25 Пакет ПВХ 14 815 Склад №1 26 Оладьи замороженные 35 384 Склад №3 27 Носки мужские 74 101 Склад №5 28 Носки женские 72 891 Склад №4 29 Ножницы 11 186 Склад №3 30 Мякоть кокоса 29 334 Склад №3 31 Монитор 19″ 36 594 Склад №4 32 Молоко 62 002 Склад №5 33 Мангал 48 693 Склад №4 34 Малина весовая 34 174 Склад №2 35 Лопата 66 841 Склад №4 36 Лом 68 051 Склад №5 37 Ложка чайная 42 643 Склад №4 38 Лодка надувная 47 483 Склад №3 39 Лавровый лист 37 804 Склад №5 40 Куртка стеганная 71 681 Склад №3 41 Красная краска 11 123 Склад №2 42 Кофе 59 582 Склад №3 43 Колготки женские 17 235 Склад №3 44 Клавиатура 12 396 Склад №4 45 Карп филе 51 112 Склад №1 46 Кабачки 57 162 Склад №1 47 Имбирь 43 853 Склад №5 48 Икра черная 23 285 Склад №3 49 Икра красная 22 075 Склад №2 50 Изюм 45 063 Склад №1 51 Земляника 32 964 Склад №1 52 Зелень (укроп) 2 112 Склад №3 53 Груша 1 222 Склад №4 54 Грибы 53 532 Склад №3 55 Горошек 54 742 Склад №4 56 Гиря 69 261 Склад №1 57 Вилки стальные 9 976 Склад №2 58 Ветошь 49 903 Склад №5 59 Весы 16 025 Склад №2 60 Ведро 8л 75 310 Склад №1 61 Ведро 10 л 76 520 Склад №2 62 Валенки 70 471 Склад №2 63 Бумага 400мг/м 39 013 Склад №1

Несмотря на то, что таблица имеет всего 4 столбца перечень товаров довольно обширный и при отправке на печать занимает не один печатный лист. При проведении ревизии на складе носить с собой кипу бумаги неудобно.

Чтобы сэкономить немного бумаги, тонера и электроэнергии затраченной на печать сама собой возникает идея распечатать таблицу в две колонки на каждом листе, но реализовать данную идею не так уж просто.

Если в программе Word есть функция во вкладке «Разметка страницы» называемая «Колонки», которая позволяет делить текст на несколько колонок, то в Excel такой опции найти не удается.

Поэтому, чтобы разделить данные из таблицы на две колонки, необходимо записать макрос, который будет выполнять указанные действия.

Макрос выглядит следующим образом:

Sub DveKolonki()

Dim sheetActive As Worksheet, sheetNoviy As Worksheet ‘добавляем переменные, как листы

Dim Vsego As Long, Perviy As Long ‘добавляем переменные для определения границ таблицы

Set sheetActive = ActiveSheet ‘присваиваем переменной активный лист

Vsego = sheetActive.Cells.Find(What:=»?», LookIn:=xlValues, LookAt:= _

xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _

, SearchFormat:=False).Row — 1 ‘определяем диапазон

Perviy = Application.WorksheetFunction.RoundUp(Vsego / 2, 0) ‘делим диапазон

Set sheetNoviy = Sheets.Add(, Sheets(Sheets.Count)) ‘определяем новый лист

sheetNoviy.Range(«A1:E1»).Value = sheetActive.Range(«A1:E1»).Value

sheetNoviy.Range(«F1:J1»).Value = sheetActive.Range(«A1:E1»).Value

sheetNoviy.Range(«A2»).Resize(Perviy, 5).Value = sheetActive.Range(«A2»).Resize(Perviy, 5).Value

sheetNoviy.Range(«F2»).Resize(Vsego — Perviy, 5).Value = _

sheetActive.Range(«A» & Perviy + 2).Resize(Vsego — Perviy, 5).Value ‘делим таблицу

End Sub

Необходимо в панели разработчика открыть просмотр кода и добавить код макроса в книгу Excel.

Запускать макрос можно из перечня макросов (книги макросов) или присвоить его активному элементу, например, кнопке или чекбоксу.

Подробнее о присвоение макроса кнопке далее по ссылке.

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

Как поделить таблицу Excel на две колонки для печати на одном листе.: 2 комментария

отчет на 80 листов на первом листе будет столбец с первого листа (начало) и столбец с сорокового листа …. кому это может понадобиться ….

правильно это если по порядку на первом листе не 40 строк в один столбец (например) а первые 80 строк в два столбца, на втором листе продолжение.

это уже можно назвать «как колонки в ворде»

Добрый день, Алексей. Вы правы для больших таблиц предложенный вариант распечатки подойдет не всем, поэтому на сайте не выложен готовый файл с макросом, а опубликован код VBA (макрос), который каждый пользователь сможет скорректировать — «подправить» для своих целей и своей конкретной таблицы. Спасибо, что написали комментарий и указали на возможные трудности в работе с макросом.

📎📎📎📎📎📎📎📎📎📎