【发布时间】:2019-09-19 22:31:52
【问题描述】:
我正在尝试在特定列中查找特定值。例如B 列中的值100000。以下代码仅在列宽到足以显示完整数字时才有效:
Dim rngSearchRange As Range
Set rngSearchRange = ThisWorkbook.Worksheets(1).Columns(2)
Dim searchTerm As Variant
searchTerm = 100000
Dim rngResultRange As Range
Set rngResultRange = rngSearchRange.Find(What:=searchTerm, lookin:=xlValues, lookat:=xlWhole)
一旦列变窄,因此 Excel 仅在特定单元格中显示 ##### 而不是 100000,查找方法返回 Nothing。
有没有办法根据实际值而不是值的显示来使用查找方法?如果没有,是否有任何替代 For Each cell In rng.Cells 的方法?最终,我正在寻找使用最少资源的方法。
注意:searchRange 只有一列,searchValue 要么不存在,要么只存在一次。
注意:使用 match() 时有一个 followup question 注意:尽管数据和代码都没有改变,但它似乎有时会起作用。不幸的是,我无法重现更改。这整个事情可能确实是一个错误
【问题讨论】:
-
尝试将
lookat:=xlWhole更改为lookin:=xlValues -
可以重现
Find失败。自动调整列是一种选择吗? -
或者正在使用
Application.Match选项? -
@ScottCraner 我无法摆脱
lookat:=xlWhole(因为它不会给我正确的结果),但我尝试添加lookin:=xlValues- 没有变化。 -
经过测试,我发现
LookIn:=xlFormulas在所有情况下都有效。如果您不指定此参数,它将继承上次使用时的设置。