Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
VBA. Удаление неопределенного количества столбцов
 
Уважаемые знатоки, простите, что опять беспокою.. но есть задача, которую не могу решить..
есть большая таблица.. нужно удалить столбцы, но количество столбцов все время меняется.. фиксированы только A:O.
Нужно удалить все колоки начиная с P до 1й желтой колонки (Overall result, с таким название колонок в таблице 2, одна в середине, другая в конце)
Вв примере под удаление колонки P:BB, но может быть и P:BA и P:AA...
А также последнюю колонку (которая тоже свой диапозон меняет в зависимости от кол-ва столбцов) поставить на место Q
Т.е. обе колонки Overall result должны быть рядом, но сначала должны быть литры, а следом рубли.

Я крутила/вертела.. пыталась протянуть название в 1й строке и по названию уже удалить.. но при использовании Ctrl-> ексель "залезает" на следующее название, которое удалять не нужно и заменять тоже..

конечно можно сделать это вручную, но этот шаг находится в середине полного кода макроса, т.е. это малая часть..  
 
Мария -, правильно ли я понял нужно удалить столбцы которые имеют в строке 2 имя "Overall Result" ?  
видимо нет нужно удалить столбцы до первого появления  в строке 2 имя "Overall Result" ? а всегда со столбца Р???
Изменено: Mershik - 25 сен 2020 10:19:24
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, да, все верно. Нужно удалить все столбцы начиная с P до 1го появления Overall result (строка 2) и перенести колонку с 2м Overall result на место Q
 
Цитата
Мария - написал:
Нужно удалить все столбцы начиная с P до 1го появления Overall result (строка 2)
ВЫШЕ МОЖНО ВЗЯТЬ КАК НАЗВАНИЕ ТЕМЫ
Код
Sub del_col()
Dim cell As Range
Set cell = Rows(2).Find("Overall Result")
Range(Cells(, 16), Cells(, cell.Column - 1)).EntireColumn.Delete
End Sub

а это чет не понял

Цитата
и перенести колонку с 2м Overall result на место Q
но наверное так...
Код
Sub del_col()
Dim cell As Range, lcol As Long
x = 2 ' номер строки где ищем Overall Result
Set cell = Rows(x).Find("Overall Result")
Range(Cells(, 16), Cells(, cell.Column - 1)).EntireColumn.Delete
lcol = Cells(x, Columns.Count).End(xlToLeft).Column
Columns(lcol).Cut Destination:=Columns(17)
End Sub
Изменено: Mershik - 25 сен 2020 10:51:24
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, Ура!!!!!!!!! Вы ГЕНИЙ!!!!!! Спасибоо вам ОГРОМНОЕ!!! Все работает!
Страницы: 1
Читают тему (гостей: 1)
Наверх