2015-12-19 2 views
0

Я использую индексное совпадение или hlookup, чтобы убедиться, что получаю только те столбцы, которые я хочу для определенного файла. Что бы я ни совпадал, мне нужно удалить. Каков наиболее эффективный сценарий VBA для удаления всех заголовков столбцов «# N/A»?Удалить все столбцы на основе ошибки в заголовке столбца?

+1

Цикл по заголовкам справа налево, проверьте 'ISERROR (cell.Value)' и delete if True –

+0

Я пробовал следующее, но получил ошибку 424. Можете ли вы мне помочь? ' Sub del_err_colsG() Dim lastCol As Long, я As Integer lastCol = Range ("A1"). End (xlToRight) .Column Для я = 1 Для lastCol Если Cells (1, я) .IsError (cell.Value) Затем Cells.EntireColumn.Delete Next End Sub' – Zeta

ответ

2

Используйте Range.SpecialCells method с xlCellType из xlCellTypeFormulas и указать xlErrors для константы XlSpecialCellsValue.

Sub del_err_cols() 
    With Worksheets("Sheet1") 
     On Error Resume Next 
     With .Rows(1).SpecialCells(xlCellTypeFormulas, xlErrors) 
      .Cells.EntireColumn.Delete 
     End With 
     On Error GoTo 0 
    End With 
End Sub 
+0

Это самый короткий и лучший код для того, что мне нужно. Спасибо, сегодня я узнал что-то новое. – Zeta

1

Я думаю @Jeeped решение лучше, но так как вы писали код вот мое предложение:

Sub del_err_colsG() 

    Dim lastCol As Long, i As Integer 

    lastCol = Cells(1, Columns.Count).End(xlToLeft).Column 

    For i = lastCol To 1 Step -1 
     If IsError(Cells(1, i).Value) Then Columns(i).Delete 
    Next 

End Sub 
+0

Это то, что мне нужно. 1 Шаг -1 сделал это! – Zeta

Смежные вопросы