我有一张数据表,其中 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
答案1
我认为问题出在您的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
答案2
尝试一下:
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