Если нужно работать с определенной таблицей Excel, где имеется шаблон данных и из него часто нужно что-то куда-то копировать, то этот процесс можно автоматизировать. Так же пустые ячейки в этом шаблоне можно заполнять данными и копировать целый диапазон со всеми данными.
У меня была таблица с номенклатурой, в виде внутренней накладной, в которой было много позиций. Когда ко мне приходил монтажник, я выдавал некоторые позиции оборудования из этой таблицы, затем отмечал строку галочкой, чтобы она копировалась в отдельную таблицу – отчет о выданном оборудовании:
Данные помеченные галочкой напротив строки, скопировались в другой документ Excel:
Последняя ячейка с суммой 29621,4 была скопирована из ячейки, где прописана формула суммы.
Код VBA с комментариями
01 Сначала надо сделать такую фишку, чтобы при нажатии на ячейку в последнем столбце "Наличие", она выделялась галочкой и копировалась вся строка. В VBA на листе создаем функцию:
02 Теперь создаем модуль, который будет копировать строки, где поставили галочку. Данные копируются в последние пустые строки таблицы в другом документе на определенную страницу:
*Названия листов, путь для копирования в книгу, диапазон имен ячеек меняем на свои.
Конечно это можно сделать более сложными функциями, но сделал так, чтобы можно было через некоторое время вносить правки сильно не вникая в код. Так с помощью Excel VBA будут копироваться определенные строки, которые пометили галочкой в другую книгу Excel, в последние пустые строки.
Оптовикам нужен прайс в экселе, через который они смогут оформлять заказ. На одном листе находится большой каталог продукции, с характеристиками, ценами и наличием, где они проставляют цифру заказа – сколько штук им надо.
Я хочу чтобы если в рамках диапазона присутствует число больше 0, передавать на второй лист экселя содержимое некоторых ячеек, относительно той, где число больше 0. А именно – размер, цвет, стоимость, модель и прочее.
Как я понимаю, нужно как-то передать координаты заполненной ячейки на второй лист и относительно этих координат – координаты других связанных с ней ячеек.
Можно ли это сделать в экселе (он генерируется через PHPexcel) и если да – то как?
Итог: Изучите 3 различных способа копирования и вставки ячеек или диапазонов в Excel с помощью макросов VBA. Это серия из трех частей, также вы сможете скачать файл, содержащий код.
Уровень мастерства: Начинающий
Копировать и вставить: наиболее распространенное действие Excel
Копирование и вставка, вероятно, является одним из самых распространенных действий в Excel. Это также одна из самых распространенных задач, которые мы автоматизируем при написании макросов.
Есть несколько различных способов выполнить эту задачу, и устройство записи макросов не всегда дает вам наиболее эффективный код VBA.
В следующих трех видео я объясняю:
- Самый эффективный метод для простого копирования и вставки в VBA.
- Самый простой способ вставить значения.
- Как использовать метод PasteSpecial для других типов вставок.
Вы можете скачать файл, который я использую в этих видео ниже. Код также доступен внизу страницы.
VBA Copy Paste.xlsm (91.7 KB)
Видео № 1: Простой метод «Копировать-вставить»
Видео лучше всего просматривать в полноэкранном HD.
Видео № 2: Простой способ вставить значения
Видео № 3: Метод PasteSpecial
Скачать файл с примерами
Загрузите книгу, содержащую все примеры из видео.
VBA Copy Paste.xlsm (91.7 KB)
Вставить данные ниже последней заполненной строки
Один из самых распространенных вопросов, которые я получаю о копировании и вставке с помощью VBA: «Как мне вставить данные в конец таблицы? «
Сначала нужно найти последнюю заполненную строку данных, а затем скопировать и вставить ниже неё.