Добрый день. С макросами не очень.... прошу помочь в решении задачи. Есть 2 листа таблицы с названием столбцов.
Лист1 - много разных названий столбцов. Лист2 - шаблон столбцов которые нужно оставить на листе1
Очень часто нужно редактировать таблицу (выбрасывать огромное к-во не нужных), хотелось бы упростить работу и сократить ошибки. Возможно есть и другие варианты без макроса?
Добрый день. С макросами не очень.... прошу помочь в решении задачи. Есть 2 листа таблицы с названием столбцов.
Лист1 - много разных названий столбцов. Лист2 - шаблон столбцов которые нужно оставить на листе1
Очень часто нужно редактировать таблицу (выбрасывать огромное к-во не нужных), хотелось бы упростить работу и сократить ошибки. Возможно есть и другие варианты без макроса?bobrenja
Нашел на просторах интернета код, но он только удаляет столбцы которые прописаны в массив. Малость не то ((
[vba]
Код
Sub test2()
Dim iCell As Range, iColumn As Variant For Each iColumn In Array("A1", "Customer name", "Carrier") Set iCell = ActiveSheet.UsedRange.Rows(1).Find(iColumn, , xlValues, xlWhole, , , False) If Not iCell Is Nothing Then iCell.EntireColumn.Delete Next End Sub
[/vba]
Нашел на просторах интернета код, но он только удаляет столбцы которые прописаны в массив. Малость не то ((
[vba]
Код
Sub test2()
Dim iCell As Range, iColumn As Variant For Each iColumn In Array("A1", "Customer name", "Carrier") Set iCell = ActiveSheet.UsedRange.Rows(1).Find(iColumn, , xlValues, xlWhole, , , False) If Not iCell Is Nothing Then iCell.EntireColumn.Delete Next End Sub
Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2")
For j = sh1.Cells(1, sh1.Columns.Count).End(xlToLeft).Column To 2 Step -1 If WorksheetFunction.CountIf(sh2.Rows(1), sh1.Cells(1, j).Value) = 0 Then sh1.Columns(j).Delete End If Next j
Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2")
For j = sh1.Cells(1, sh1.Columns.Count).End(xlToLeft).Column To 2 Step -1 If WorksheetFunction.CountIf(sh2.Rows(1), sh1.Cells(1, j).Value) = 0 Then sh1.Columns(j).Delete End If Next j