Excel 2010 宏 : Replace all cells containing number greater than AND smaller than

标签 excel excel-2010 vba

我有一个很大的 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/

相关文章:

java - 从具有格式的 Excel 文件中获取单元格值

vba - 重置UsedRange而不激活工作表

excel - 范围内的最后一行

excel - 使用 Excel 中的 Web 服务功能使用 Yahoo API 从 Yahoo Finance 提取 "Next Earnings Date"

vba - 循环 VBA 宏以打开文件夹中的文件、导入行,然后使用相对路径移动到另一个文件夹

vba - 从网站上抓取数据时出现问题

excel - 将图像粘贴到 Excel 后裁剪图像

excel - 匹配名称并将行从工作表 1 复制到工作表 2 的相应列上

vba - 如何优化此 UDF

excel - NACHA 文件格式的记录分隔符?