О том, как при помощи несложного макроса 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 колонок. Хотим распечатать первую и седьмую колонку последовательно в одном листе