Есть шарящие за макросы в экселе? [решено]

Привет! Пытаюсь облегчить себе работу и подготовить выданную таблицу, зачистив ненужные столбцы, но что-то не понимаю, в чем вылезает ошибка. Пробовала чисто интуитивно разные способы, но ни один не сработал — либо чистит неверно, либо выпадает в ошибку "данная команда неприменима для перекрывающихся диапазонов".

Rows("1:2").Select Selection.Delete Shift:=xlUp Rows("1:1").Select Selection.AutoFilter Range("E:AH,AJ:AK,AN:AN,AP:AQ,AS:AX,AZ:BC,BE:BS").Select Selection.Delete Shift:=xlToLeft End Sub
1010

Разделить селекцию range на несколько, если ты именно столбцы удаляешь

DeleteRange "E:AH"
DeleteRange "AJ:AK"
и так далее
Sub DeleteRange(r)
Range(r).Select
Selection.Delete Shift:=xlToLeft
End Sub

и удалять столбцы по очереди - не? нужно обязательно весь этот огромный range за раз выделить и удалить?

1
Ответить

только в обратном порядке, удалять столбцы справа налево, иначе учитывать сдвижку столбцов

2
Ответить

И еще формат файла надо зырить и что лежит в удаляемых столбцах

Здесь нужно быть аккуратным: если таблица сдержит помимо пустых строк, строки с заполненными и пустыми ячейками, то часть ячеек перескочит со своих строк на другие, что испортит таблицу. Если таблица в формате EXCEL 2007 , то EXCEL не даст испортить таким образом таблицу: появится сообщение «Данная команда неприменима для перекрывающихся диапазонов».

СОВЕТ: Стоит помнить, что ячейки, содержащие формулы (даже если это ссылки на пустые ячейки), не считаются пустыми по определению.

1
Ответить

Разделив удаление столбцов по одному range, будет проще найти хотя бы косячный range, чтобы к нему присмотреться.

Ну и как правильно подсказали, удаление делать справа налево.

1
Ответить

и нет, не обязательно за раз, но я, во-первых, хотела облегчить код, во-вторых, запуталась со сдвигом столбцов: то ли после каждого удаления новые имена ставить, то ли первоначальные.. и что-то ни один вариант не удовлетворял.

Ответить