Excel VBA Макросы: автоматически удалять две верхние ячейки и замещать их двумя нижними

Автор aloct, 26 февраля 2019, 19:31

aloct

Копирую информацию для отчета с другой программы. При копировании в Эксель вставляется информация в 4 ячейки (2 сверху и 2 снизу).
В две верхние ячейки вставляется ненужная информация - слова "№ наряда" и "машина".
В две нижние ячейки вставляется нужная информация - собственно номер наряда и номер машины.

Нужен макрос, который бы автоматически распознавал такого рода ячейки, удалял сразу же после моей вставки ненужное содержимое двух верхних ячеек ("№ наряда" и "машина"), а содержимое двух нижних ячеек перетаскивал на место освободившихся верхних ячеек.

Если это важно, то вставляется информация только в два столбца - В и С.
Работа рутинная, и как-либо автоматизировать копирование нужной информации из другой программы в Эксель я не могу, но хочу хотя бы избавиться от ненужных рутинных действий.

Файл прикрепил.
На листе 1 я сделал вставку (ctrl+v) при активной ячейке В5. Вставилось все в 4 соседние ячейки.
На листе 2 я удалил содержимое двух верхних ячеек ("№ наряда", "машина"), а содержимое двух нижних ячеек переместил на их место. Собственно все что каждый раз приходится делать.
После определенного количества строк с перечнем запчастей опять идет аналогичная вставка - номер наряда, номер машины. Опять произвожу те же рутинные действия.
Вроде бы и не тяжело вручную, но отчет делаю в конце рабочего дня, впопыхах, там куча таких вставок. И приходится выполнять одни и те же рутинные действия каждый раз. Адреналин зашкаливает, хочется побыстрее, в ячейки не попадаю.

[вложение удалено администратором]

Администратор

Есть два варианта.

Вариант 1

Можно сделать так, чтобы макрос автоматически запускался при любом изменении на заданном листе. Макрос будет анализировать:
1) в каком столбце произошло изменение;
2) сколько ячеек изменилось;
3) макрос может посмотреть верхние две ячейки и прочитать, что в них.
Если это именно эти четыре ячейки, макрос может удалить верхние две ячейки.


Вариант 2

Можно сделать кнопку. Ваша программа вставит данные. После чего юзер щёлкает кнопку, чтобы запустить макрос. Макрос ищет в столбцах B:C нужный текст и удаляет две ячейки.


aloct

Можно и Вариант 2 - кнопкой. Это уже будет быстрее, и за это будет огромное спасибо.
Ну а в идеале - Вариант 1, но я сформулирую так.
- чтобы макрос автоматически запускался при вставке (появлении новой информации) в столбцах В и С;
- анализировал столбцы В и С, и если находил слова "№ наряда" и "Машина", то
- удалял эти слова с ячеек (содержимое ячеек);
- информацию, находящуюся в двух ячейках ниже, переносил (вырезал и вставлял) в освободившиеся верхние две ячейки (где были слова "№ наряда" и "Машина".

Замечу, № наряда и Машина - это столбцы (занимают столбцы В и С в Экселе). То есть информация про номер наряда и машину вставляется многократно в разные строки этих двух столбцов (то есть заносятся в таблицу).

Администратор

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

[вложение удалено администратором]