Страницы: 1
RSS
VBA. Удалить столбцы по списку
 
Все добрый день,
   
Есть таблица (А….AA) и нужно чтобы она удалял столбцы не по названию в столбце, а по номеру столбца  и сдвигалась влево.
Я никак не могу понять, как можно вставить If then Else
Код
If (диапозон A…ААА) then
     Columns - B,C,H,J не удаляем - (как записать не удаляем - а оставляем)
Else
     Columns - которые не указаны выше удаляем

Спасибо
 
не удаляем- значит ничего не делаем.
По вопросам из тем форума, личку не читаю.
 
Можно так
Код
    For n = 12 To 1 Step -1
        If n <> 2 And n <> 3 And n <> 8 And n <> 10 Then Columns(n).Delete Shift:=xlToLeft
    Next n
или так
Код
    For n = 12 To 1 Step -1
        Select Case n
            Case 2, 3, 8, 10
            Case Else
                Columns(n).Delete Shift:=xlToLeft
        End Select
    Next n
Изменено: msi2102 - 19.12.2019 07:47:44
 
Faf, здравствуйте
Ещё несколько вариантов
Тема: VBA. Удалить столбцы по списку
Изменено: Jack Famous - 19.12.2019 11:55:41 (Заменена функция преобразования)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Здорово, то что надо, всем большое спасибо!
Изменено: Faf - 20.11.2020 22:38:45
 
Можно и без цикла
Код
Application.Union(Columns(2), Columns(4), Columns(6), Columns(8).Delete
 
Цитата
Faf: Я не понимаю принцип связки For In , If then
гуглите, потому что вы вообще такого странного сейчас наговорили  :D
Цитата
msi2102: Можно и без цикла
или совсем просто: Range("B1,D1,F1").EntireColumn.Delete
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous: Range("B1,D1,F1").EntireColumn.Delete
Так не хотим  :D
Цитата
Faf: нужно чтобы она удалял столбцы не по названию в столбце, а по номеру столбца
А так ещё проще  :D  :D  :D
Код
Columns(6).Delete: Columns(4).Delete: Columns(2).Delete
Изменено: msi2102 - 20.12.2019 10:10:55 (Изменил порядок удаления)
 
Цитата
msi2102: Так не хотим
ну да)) ну я для этого функцию преобразования пришил для универсальности  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Удаление столбов лучше делать через циклы?
 
Faf, вы знаете для чего придумали циклы в программировании? Чтобы не писать тысячи одинаковых строк кода и чтобы код лучше читался. Один программист напишет программу из 1000 срок удаления 1000 столбцов, а другой программист напишет через циклы в 3 строки. Обе программы будут выполнять одно и тоже, но читаемость кода и времени написания всей программы будут лучше у циклов. Без разницы как удалять столбцы, есть разница в количестве строк кода и читаемости кода
Изменено: New - 21.11.2020 22:20:40
 
New,

циклы знаю, юзаю в программирование.
Если VBA это язык программирование, то ок, ясно
 
судя по количеству ответов в теме - тема "удалить столбцвы по списку", не исчерпаема вглубь, как атом
(этот ответ прошу не учитывать), не претендую на раскрытие темы, я х/з как удалять столбцы "по списку" пока не определено что из себя представляет список, в котором  собраны кандидаты на удаление))
Изменено: Ігор Гончаренко - 22.11.2020 00:01:42
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх