У меня есть таблица данных, в которой столбец L имеет формулу vlookup. В строках, где столбец L (т. Е. Vlookup возвращает «# N/A»), я хотел бы очистить содержимое восьми ячеек слева (столбцы с D по K). Я хотел бы создать макрос VBA для этого. Буду признателен за любую оказанную помощь.

Вот мой код прямо сейчас:

Dim r As Range
Dim i As Long
ActiveWorkbook.Worksheets("1yr Matcher").Select
For i = 7 To 500
    For Each r In Range(Cells(10, i), Cells(Cells(ActiveSheet.Rows.Count, i).End(xlUp).Row, i))
        If IsError(r) Then
            If r >= 0 Then r.Offset(, -1).Resize(, -8).ClearContents
        End If
    Next r
Next

2 ответа2

0

Я думаю , что проблема в вашем For операторов. Прямо сейчас значение для r повторяется через { G1 , G2 , ..., G10 }, а затем { H1 , ..., H10 } и вплоть до { SF1 , ... SF10 }. Похоже, вы хотите перебрать все ячейки в L7:L500 так почему бы не сделать это напрямую?

Dim r As Range
For Each r In Range("L7:L500")
    If IsError(r) Then
        If r >= 0 Then r.Offset(, -1).Resize(, -8).ClearContents
    End If
Next
0

Попробуйте это:

Sub ErrorCleaner()
    Dim r As Range, rng As Range, L As Long
    Set rng = Range("L:L").Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
    For Each r In rng
        If r.Text = "#N/A" Then
            L = r.Row
            Range(Cells(L, "D"), Cells(L, "K")).Clear
    End If
    Next r
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .