在满足条件时,扫描测距值并保留空白(或零)
我有以下代码:
Sub DELETE2() Dim dat As Variant Dim rng As Range Dim i As Long Set rng = Range("C12:K89") dat = rng For i = LBound(dat, 1) To UBound(dat, 1) If dat(i, 1) = "3" Or dat(i, 1) = "2" Then dat(i, 1) = "" End If Next rng = dat End Sub
我的目标是在该范围内find所有值为3或1的单元格,并在满足条件时保留空白(或用0填充),但这不起作用,没有错误消息或输出。
我认为Excel Replace All
就是简单的,你不需要一个macros来做这个。
如果你仍然在寻找macros代码尝试下面的一个。 我试了下面的代码,它对我的样品数据工作正常。
Sub DELETE2() Dim rng As Range Dim cellval As Variant Set rng = Range("C12:K89") For Each cellval In rng.Cells If (cellval .Value = "3" Or cellval .Value = "2") Then cellval .Value = "" Next cellval End Sub
Siva已经给出了答案,但是这里有一个“修正”你的代码的方法:
要遍历整个数组,请为该列使用第二个参数
Dim i As Long Dim j As Long '... For i = LBound(dat, 1) To UBound(dat, 1) For j = LBound(dat, 2) To UBound(dat, 2) If dat(i, j) = "3" Or dat(i, j) = "2" Then dat(i, j) = "" End If Next j Next i
您可以在数组上使用For Each
循环,但只能访问数组中不能replace的元素,因为您只获取值,而不是引用。
如果你不想用数组来实现,可以使用For Each
循环:
Dim c As Range For Each c In rng If c.Value = "3" Or c.Value = "2" Then c.Value = "" End If Next c
replace方法可能会是最快的