vba - 在一定范围内有条件地更改值的最有效方法?

标签 vba excel

我只是想遍历一个(大)范围并用给定的替换值替换某些值(如果它们高于给定的最大值或低于给定的最小值......还有一个特定字符)。

我的第一个想法是简单地遍历每个单元格并在必要时检查/替换。我感觉这个过程会非常慢,我很好奇是否有更好的方法来完成这个任务。

每当我在 VBA 中编写执行类似操作的代码时,我都会看到每个单元格的值逐个单元格地更改,似乎必须有更好的方法。提前致谢。

编辑:

我什至还没有编写这个实现,因为我知道结果会是什么,如果可能的话我宁愿做一些不同的事情,但这就是它的样子

For something
  If(Range.Value == condition)
    Range.Value = replacement_value
  Range = Range.Offset(a, b)
End For

最佳答案

在单独的列中创建公式,然后特殊复制/粘贴仅值

= if(A2 > givenvalue; replace; if(A2< anothergivenvalue; anotherreplace; if (A2 = "particularcharacterortext"; replaceonemore; A2)))

将公式放入空列的空单元格中,将其拖动或复制/粘贴到整个列。之后,如果新值正常,则仅将值复制/粘贴到原始位置。

关于vba - 在一定范围内有条件地更改值的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069586/

相关文章:

excel - 从 Checkbox 宏中排除行或列

excel - #xslt #C++ Excel 在打印预览时突然崩溃

vba - 在 VBA 中使用多个按钮添加数据

vba - 需要一个简单的搜索功能来显示列中最常见的值。 (有模棱两可的选择)

VBA:添加不规则范围

Excel宏用变量替换标签

excel - VBA 类型不匹配 (13)

Excel、MID、搜索错误

vba - 迭代集合 (VBA)

vba - 如何在文件夹中的所有(已关闭)Excel 文件上运行一个 VBA 宏?