我有一个很大的 Excel 工作表,我想在其中替换多个数字范围(全部在同一单元格范围内)。例如,我想将所有大于-5且小于5的数字替换为数字0。所有大于5且小于10的数字应替换为1,所有大于-10且小于-5的数字应替换为0。替换为 -1,依此类推。
我尝试使用这个公式
Sub replace()
Dim rng As Range
For Each rng In Range("B2:AI40")
If IsNumeric(rng) < 5 And IsNumeric(rng) > -5 Then
rng = 0
End If
Next rng
End Sub
这并不能完全解决问题,因为它将所有内容替换为 0。类似地,this解决方案也不起作用。我如何修改任一公式以满足我的需要,或者这样的替换是不可能的?
谢谢!
最佳答案
尝试
Sub replace()
Dim rng As Range
For Each rng In Range("B2:AI40")
If rng.Value < 5 And rng.Value > -5 Then
rng = 0
End If
Next rng
End Sub
IsNumeric
是一个 bool 函数,它返回 0 或 1,这就是之前每个单元格都设置为 0 的原因。如果您希望单元格中包含非数字值,则可能必须使用以下代码:
Sub replace()
Dim rng As Range
For Each rng In Range("B2:AI40")
If IsNumeric(rng) then
If rng.Value < 5 And rng.Value > -5 Then
rng = 0
End If
End if
Next rng
End Sub
当您使用整数除(\
)除以 5 时,整个任务变得更简单(并且还处理您提到的其他情况):
Sub replace()
Dim rng As Range
For Each rng In Range("B2:AI40")
If IsNumeric(rng) then
rng = rng.Value \ 5
End if
Next rng
End Sub
关于Excel 2010 宏 : Replace all cells containing number greater than AND smaller than,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124271/