Уведомление об ответе может попасть в папку "Спам".
На Яндексе (или в другой почтовой системе) пометьте полученное письмо "Не спам", чтобы уведомления не попадали в папку "Спам".
Или, если вы используете почтовую программу (а не браузер), то разрешите спаму попадать в папку "Входящие" (в этом случае в теме письма будет текст [OBORONA-SPAM]).

Цикл вставки строк со сдвигом

Автор Посетитель, 06 октября 2022, 16:44

Посетитель

Добрый день!

У меня задача следующая:
1. На лист "Лист2" в ячейку B12 (она объединенная B12:U12) вводится шифр;
2. Нажимается кнопка "Загр.шифр";
3. Удаляются строки, которые есть между кнопками "Загрузить шифр". Изначально таких строк 2, но почитав ниже вы поймете, что их может быть разное количество;
3. Копируется ячейка Лист2!B12:U12 в Лист5!B12:U12;
4. Если ячейка в диапазоне Лист5!D13:D38 не содержит ошибку, то копируется вся строка из листа "Лист5!" в "Лист2!". Причем не просто копируется а вставляется как новая со сдвигом существующих (в VBA это свойство .insert).

То есть, например, добавили строку Лист5!13:13 после строки Лист2!12:12 (в VBA это свойство .insert). При этом ячейки Лист2!A13:E13, которые мы скопировали из Лист5!A13:E13 будут значениями, а ячейки Лист2!F13:W13 должны быть формулами как ячейки Лист2!G6:W6.
Если так проще, то я могу добавить подобные формулы на лист Лист5!F13:W13 чтобы их в последующем копировать в составе строки.

Итого: строк вставки может быть разное количество и добавляемая строка состоит на половину из текста, а на половину из формул. Потому у меня не получается написать такой код.

В дополнение:
1. Можно ли записать так, чтобы копировался шифр в следующей справа от кнопки "Загр.шифр" ячейки? Прошу, потому что такой алгоритм должен быть для каждой кнопки на "Лист2!";
2. По аналогии с пунктом выше указанный код записать в относительных ссылках от кнопки "Загр.шифр".

Буду благодарен, за вашу помощь!

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

На листе 2, в ячейке A13 откуда взяты данные?
Я таких данных не вижу на листе 5. Как я понял, нужно скопировать данные из листа 5 на лист 2, но на листе 2, в этой ячейке неизвестные данные.

Посетитель

Откройте скриншот (во вложении).

Мне нужно отображать список секций для 3-х разных вентиляционных установок: UTR, ANR, ANP.
Для UTR будет как на скриншоте под цифрой 1;
Для ANR и ANP как под цифрами 2,3 и т.д.

Для UTR нет шифра установки;
Для ANR и ANP есть.

Его-то я и извлекаю и расписываю: записываю каждую секцию установки. Они отображаются в ячейках Лист5!D13:D38 после того как скопируем шифр и вставим на лист5 (пункт 3).

Теперь то что вы спрашиваете:
для всех установок будет записано так:
Столбец А
Система
[изначально ячейка пуста в каждой строчке; название системы, например П1. Ее введет пользователь после того как запишет шифр, нажмет кнопку и получит список секций в ячейках Лист2!D13:D38]

Столбец B
Тип
[копируется с Листа5]

Столбец С
Т/размер
[копируется с Листа5]

Столбец D
Наименование
[это то самое важное что нужно скопировать как я описал]

Столбец F
Наименование
[тоже нужно скопировать как и D (думал сам расширю код по образцу)]

Столбцы F-W
Столбцы с формулами - я писал о них в письме - нужно как для UTR. Могу добавить на лист5, но помогите сделать чтобы корректно они копировались на лист2 и работали

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

Вы выложили эксель-файл (я его с форума удалил, но он у меня есть).
Ячейка D13 пустая, как её заполнять?

Посетитель

В моем файле на листе5 ячейка D13 и последующие содержат формулу. редактировать содержимое ячеек Лист5!D13:D38 не нужно.
Гляньте еще раз мой алгоритм, который нужно реализовать. Его нужно реализовать исключительно в VBA. Разве что формулы из диапазона Лист2!G6:W6 можете скопировать в Лист5!G13:W38. В алгоритме вам нужен пункт 4 - я в нем и далее все расписал.


У меня задача следующая:
1. На лист "Лист2" в ячейку B12 (она объединенная B12:U12) вводится шифр;
2. Нажимается кнопка "Загр.шифр";
3. Удаляются строки, которые есть между кнопками "Загрузить шифр". Изначально таких строк 2, но почитав ниже вы поймете, что их может быть разное количество;
3. Копируется ячейка Лист2!B12:U12 в Лист5!B12:U12;
4. Если ячейка в диапазоне Лист5!D13:D38 не содержит ошибку, то копируется вся строка из листа "Лист5!" в "Лист2!" (т.е. в Лист2!D13:D38). Причем не просто копируется а вставляется как новая со сдвигом существующих (в VBA это свойство .insert).

То есть, например, добавили строку Лист5!13:13 после строки Лист2!12:12 (в VBA это свойство .insert). При этом ячейки Лист2!A13:E13, которые мы скопировали из Лист5!A13:E13 будут значениями, а ячейки Лист2!F13:W13 должны быть формулами как ячейки Лист2!G6:W6.
Если так проще, то я могу добавить подобные формулы на лист Лист5!F13:W13 чтобы их в последующем копировать в составе строки.

Итого: строк вставки может быть разное количество и добавляемая строка состоит на половину из текста, а на половину из формул. Потому у меня не получается написать такой код.

В дополнение:
1. Можно ли записать так, чтобы копировался шифр в следующей справа от кнопки "Загр.шифр" ячейки? Прошу, потому что такой алгоритм должен быть для каждой кнопки на "Лист2!";
2. По аналогии с пунктом выше указанный код записать в относительных ссылках от кнопки "Загр.шифр".

P.S. Я снова вложил файл.

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

Файл я взял, он у меня есть. Больше необходимости его выкладывать нет.
В ответе #4 тот же самый текст, что и в первом сообщении?
Я имел ввиду Лист 2, ячейка D13. Как её заполнить. Вы выложили файл, на листе 2, в D13 почему пусто? Вам надо для примера сделать пример, как должно быть.

Посетитель

Теперь я понял, что вы хотите.
Сделал.
Во вложении файл. Лист2! выглядит так как должен после нажатия на кнопку и выполнения всех операций.
Замечу что:
Ячейки Лист2!A13:F13 это значения, а Лист2!G13:W13 - формулы.
В отличие от листа5! строки №14 и №22,23,24,25,26 не были добавлены на лист2!, т.к. в ячейках Лист5!D26 и, соответственно, Лист5!D34:D38 есть ошибка.
Также заполнил столбцы на лист5! чтобы было понятно откуда копируем формулы для Лист2!G13:W13.
Не пугайтесь новых столбцов в диапазоне Лист2!G13:W13 - они раньше были скрыты, а сейчас я просто их показал.




Напомню про дополнение:
"В дополнение:
1. Можно ли записать так, чтобы копировался шифр в следующей справа от кнопки "Загр.шифр" ячейки? Прошу, потому что такой алгоритм должен быть для каждой кнопки на "Лист2!";
2. По аналогии с пунктом выше указанный код записать в относительных ссылках от кнопки "Загр.шифр"."