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

 О том, как при помощи несложного макроса 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.Макро VBA Excel

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

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


 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *