Добрый день, уважаемые! Помогите пжл решить задачу: как в большой таблице быстро выделить все колонки с одинаковым названием. Например, только "Выручка" (см.прикрепленный отчет).
AndaAnda,если будет точно как в примере, достаточно цикла с покраской столбца (или просто выделением, если нужно копировать). Если нужно просто собрать данные - рекомендую попробовать Power Query, который преобразует эту таблицу в одномерную для сводной или дальнейшей обработки
Программный код, как и яды, лучше тестировать по капельке Люблю изобретать велосипеды с колесами произвольной формы
Captain Nemo, вам нужен макрос обратного цикла по столбцам с удалением
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Sub deleteColumns()
ColumnName = Cells(2, ActiveCell.Column)
For Each Cell In Intersect(Rows(2), ActiveSheet.UsedRange)
If Cell = ColumnName Then
If IsEmpty(DeleteRange) Then
Set DeleteRange = Cell
Else
Set DeleteRange = Union(DeleteRange, Cell)
End If
End If
Next
DeleteRange.EntireColumn.Delete
End Sub
Встать на любой столбец из тех что нужно удалить иииии
Captain Nemo написал: их удалить/скопировать/вырезать
с позволения медведя добавлю код запросом пользователю:
Код
Sub deleteColumns()
ColumnName = Cells(2, ActiveCell.Column)
For Each Cell In Intersect(Rows(2), ActiveSheet.UsedRange)
If Cell = ColumnName Then
If IsEmpty(DeleteRange) Then
Set DeleteRange = Cell
Else
Set DeleteRange = Union(DeleteRange, Cell)
End If
End If
Next
DeleteRange.EntireColumn.Select
If MsgBox("Удалить выделенные столбцы?", vbYesNo + 32) = vbYes Then
DeleteRange.EntireColumn.Delete
End If
End Sub
Самый простой способ: нажимаем Alt+F8, выбираем макрос и жмём "Выполнить". Ещё можно привязать макрос к кнопке или назначить сочетание клавиш для запуска. Почитайте эту статью.
В вашей таблице нет конца столбцам. Непонятно зачем копировать через столбец и куда-то это вставлять. Проще копировать всю таблицу. Если нужно только удалить данные из выбранных столбцов и на листе размещать 1 месяц, ~60 столбцов, то можно сделать гиперссылку.
... или просто остановиться на замене .Delete на .Select. А дальше ТС уже сам решит, дЕлить (эээ... не путать с делИть), кОпить (эээ... не путать с копИть) или клеарконтентсить.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
БМВ написал: Встать на любой столбец из тех что нужно удалить иииии
Код
Sub www()
With Rows(2)
.RowDifferences(.Find(ActiveCell.Value)).EntireColumn.Hidden = True
.SpecialCells(12).EntireColumn.Select 'delete
End With
Columns.Hidden = False
End Sub
k61, приветствую, Карен! Не знал, что так можно - спасибо Матчасть
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
k61, Карен, не совсем согласен с кодом в области .Find(ActiveCell.Value) - но в целом метод применим с одним но, если ранее не было скрытых столбцов . Не люблю я портит то что пользователь сделал руками.