此表由其他一些VBA代码生成。我写了一个简单的脚本,在生成后从表中清除#VALUE项。
'Clean any value errors before charting
With Worksheets("CG Raw Data")
On Error Resume Next
Range("A2:W2").End(xlDown).SpecialCells(xlCellTypeFormulas, xlErrors).ClearContents
On Error GoTo 0
End With
End Sub
现在表格如下:
由于某些原因,如果整个列有任何空白而不仅仅是#VALUE错误,则此代码会清除整个列。我希望它只删除#VALUE错误并保留所有其他单元格。据我所知,代码应该这样做。错误是什么?
答案 0 :(得分:3)
我的第一个建议是用=IFERROR(,"").
或者,这样的事情应该有效:
DIM rngCell as Range
For Each rngCell In Worksheets(1).Range("A1:W" & Range("A1").End(xlDown).Row)
If IsError(rngCell) Then
rngCell.Clear
End If
Next rngCell
我想象整个数据集正在被清除,因为您正在检查整个范围,如果任何值包含错误,则会清除它。
我没有代表发表评论。
答案 1 :(得分:0)
问题#1 - 您是Withing
特定工作表,但不符合Range()
问题#问题#2 - 您将清除#VALUE
以外的错误。
怎么样:
Sub NoValue()
Dim r As Range, N As Long
With Worksheets("CG Raw Data")
N = .Cells(Rows.Count, "W").End(xlUp).Row
For Each r In .Range("A2:W" & N)
If r.Text = "#VALUE!" Then r.ClearContents
Next r
End With
End Sub