Удаление определенной строки с особенным условием

Автор Посетитель 24.10.2023, 24 октября 2023, 17:25

Посетитель 24.10.2023

Здравствуйте. Есть определенный массив данных из множества ячеек, столбцов, строк. В столбце A имеется 2 строчки с данными и разными именами, например, ячейка А7 = 808934, ячейка А10 = 999999. В этих строках (B7, C7, D7, E7 и так далее) имеются значения. В строке А7(B7, C7, D7...) значения нулевые (00:00) в каждой ячейке, в строке А10(B10, C10, D7...) значения не нулевые (19:33, 21:33...).

Необходимо заменить название ячейки A7 на название А10 (808943 заменить на 999999), а старую ячейку со значением "999999" удалить и всю строчку вместе с ячейкой А10.

"Range("A1:A1800").Replace What:="808943", Replacement:="999999", MatchCase:=True"

замена происходит, мы имеем 2 ячейки с одинаковым названием. Нужно вписать в макрос автоматическое удаление старой ячейки со всеми значениями в строке. Подскажите, пожалуйста, как это сделать? Подумал, возможно это можно сделать каким - то образом с помощью ВПР, но пока не понял как. Спасибо

 

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

Т.е. нужно удалить строки, у которых в столбце B не 00:00?

Посетитель 24.10.2023

Нужно удалить лишь одну определенную строку, в которой в ячейках нулевые значения(они не пустые, там значения 00:00). Эта строка начинается с ячейки в столбце А, которая использовалась для замены.

Например:
Имеется ячейка А4 со значением 2101021. Дальше в строке идут значения.

Имеется ячейка А5 со значением 2101022. В этой строке значения нулевые.

Необходимо в макросе ЗАМЕНИТЬ значение ЯЧЕЙКИ А4 на значение А5. (Было 2101021, стало 2101022). Значения в строке не меняются.

Получаются две ячейки с одинаковыми значениями (2101022).
После этого нужно удалить всю строку, которая начинается с ячейки А5. (Нулевые значения).
Макрос должен автоматически находить именно определенные значения ячейки и заменять их. Ячейки могут быть не А4 и А5, а, например, А799 и А1066.
Прикрепляю скрин для лучшего понимания вопроса. В первом посте не совсем корректно описал проблему.

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

Значит нужно удалить строки, у которых в столбце B значение 00:00? Или этого не достаточно и нужно ещё что-то посмотреть?

И по какому принципу заменять значения в столбце A? Макрос двигается вниз по строкам, смотрит, что в столбце B, если здесь 00:00, значит нужно скопировать значение из столбца A в верхнюю соседнюю ячейку? Или какой-то другой принцип?

Посетитель 24.10.2023

Нужно удалить лишь одну нулевую строку, у которой в ячейке А(****) значение 2101022. Все остальные нулевые строки трогать нет необходимости.
Принцип замены очень прост:
Интересуют 2 конкретных значения ячеек А. Это числа 2101021 и 2101022.
Вижу принцип работы в следующем:
Я открываю документ, в нем 1000+ строк. Какие - то могут быть нулевыми полностью, либо же только в некоторых ячейках.

Запускаю макрос, он находит ячейку А(***) со значением 2101021, переименовывает эту ячейку в 2101022. Таким образом, у нас получаются 2 ячейки с одинаковым значением 2101022, но дальше в строчке значения у них разные.

"Range("A1:A1800").Replace What:="2101021", Replacement:="2101022", MatchCase:=True" - здесь он как раз находит необходимую ячейку и заменяет на необходимое значение

После переименования макрос удаляет полностью строку 2101022, в которой значения 00:00:00. (Нашу первоначальную строчку до переименования".

Стараюсь излагаться понятно, но это сложно описать на словах.

Замена у меня получается хорошо, находит нужные ячейки и заменяет их где бы они не были, не могу понять как мне удалить ненужную строку.


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

То есть макросу не надо просматривать все строки на листе, а нужно найти строку с заданным значением в столбце A?

Посетитель 24.10.2023

Разве макрос не будет просматривать все строки на листе в любом случае? Ему ведь необходимо найти с необходимым значением, а они могут быть в разных местах на разных листах

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

Здесь сложность русского языка.
Я имел ввиду, что макросу надо искать только одно значение?

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

Опишите ещё действия, которые делает пользователь при работе с макросом. Например:
1) пользователь нажимает кнопку, запускается макрос
2) появляется диалог, в котором пользователь указывает искомое значение
3) появляется диалог, в котором пользователь указывает новое значение
4) и т.д.

Посетитель 24.10.2023

Алгоритм действий пользователя и макроса:

1)Пользователь загружает к себе на компьютер файл Excel с определенными данными с кучей строк
2)Нажимает на кнопку "замена", в которой стоит макрос
3)Макрос ищет в столбце "А" определенное значение "2101021" и заменяет его на "2101022"
4)После замены удаляет всю строку со значением "2101022", в которой нулевые значения от B до Z (00:00:00)

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

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

Цитата:
3)Макрос ищет в столбце "А" определенное значение "2101021" и заменяет его на "2101022"

Значения "2101021" и "2101022" прямо в коде макроса записаны? Пользователь открывает код макроса, вносит изменения в код макроса и затем запускает макрос? Затем когда надо сделать следующую замену, снова переходит в VBA, вносит изменения в код и запускает макрос?