【发布时间】:2015-06-15 13:08:17
【问题描述】:
我在 Excel 2003 中遇到了一个特殊问题,在该问题中 Range.Find 方法在搜索既隐藏又属于过滤范围的单元格中的值时失败。
要清楚,这是有问题的方法调用:
Cells.Find(SearchString, LookIn:=xlFormulas, LookAt:=xlWhole)
- 如果包含 SearchString 的单元格只是被隐藏,Range.Find 可以工作。
- 如果包含 SearchString 的单元格只是过滤范围的一部分(但未隐藏),则 Range.Find 有效。
- 如果包含 SearchString 的单元格都被隐藏(通过过滤器或其他方式),并且是过滤范围的一部分,则 Range.Find 失败。
各种 Excel 网站和论坛上的许多消息来源声称,指定“LookIn:=xlFormulas”将强制 Range.Find 在隐藏单元格中进行搜索。虽然荒谬,但如果 SearchString 位于 仅 隐藏的单元格中,这似乎是正确的。如果单元格都被隐藏并且是过滤范围的一部分,则会失败。
请注意,单元格是否被过滤器隐藏并不重要。例如,您可以搜索过滤范围的标题(过滤器本身永远不会隐藏该标题),但如果该标题恰好位于您隐藏的列中,Range.Find会失败。
是否有任何 Excel 方法可以可靠地搜索单元格,而不考虑它们是否恰好被隐藏和/或过滤器的一部分?
【问题讨论】:
-
我认为您无法解决它(如果不更改
AutoFilter的本机行为,这是不可能的;我们不能)。否则,当您从那里复制/粘贴时,您还将复制未使用当前过滤器包含的条目。对于 excel,这些条目暂时是“未知的”(这是过滤器的目的)。您是否可以暂时删除过滤器并在完成所有搜索后恢复它? this post 有很多有用的答案来实现这一目标。也许您可以使用这种方法。