О том, как при помощи несложного макроса 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.
Запускать макрос можно из перечня макросов (книги макросов) или присвоить его активному элементу, например, кнопке или чекбоксу.
Подробнее о присвоение макроса кнопке далее по ссылке.
отчет на 80 листов
на первом листе будет столбец с первого листа (начало) и столбец с сорокового листа …. кому это может понадобиться ….
правильно это если по порядку на первом листе не 40 строк в один столбец (например) а первые 80 строк в два столбца, на втором листе продолжение.
это уже можно назвать «как колонки в ворде»
Добрый день, Алексей. Вы правы для больших таблиц предложенный вариант распечатки подойдет не всем, поэтому на сайте не выложен готовый файл с макросом, а опубликован код VBA (макрос), который каждый пользователь сможет скорректировать — «подправить» для своих целей и своей конкретной таблицы.
Спасибо, что написали комментарий и указали на возможные трудности в работе с макросом.
Здравствуйте
Как распечатать две разные колонки в одном листе последовательно?
Здравствуйте
Как распечатать две разные колонки в одном листе последовательно?
Ну например:
Лист состоит из 8 колонок. Хотим распечатать первую и седьмую колонку последовательно в одном листе