格式化后查找/替换未找到单元格值

Posted

技术标签:

【中文标题】格式化后查找/替换未找到单元格值【英文标题】:Find/Replace not finding cell value after formatting 【发布时间】:2016-03-26 05:04:06 【问题描述】:

在同一工作簿中,通过宏将一列值从一个 Excel 电子表格移动到另一个电子表格。值应该是五个字符,只有数字,包括前导零。

有几种方法可以成功替换 Excel 自动格式化中丢失的前导零。结果很奇怪。

对于宏已格式化单元格的每个单元格,Find/Replace 工具拒绝识别任何包含零的搜索。

示例: 宏之前 = 9093 宏之后 = 09093

Find/Replace 窗口将找到9093 的搜索值,但不会找到09093 的搜索值。在删除格式为09093 的宏并将09093 手动键入单元格后,Find/Replace 窗口将找到一个肯定的命中。

我还没有尝试对每个值进行代码检查以获得所需的字符数,然后连接前导零,直到达到正确的字符数。我的犹豫源于我假设运行此代码的宏在必须经过 1000 左右行时会运行得非常慢。

下面的代码块是两次尝试:

''Masks for a five character sequence.
' Corrects for leading zeros being dropped for Product Code column.
' Currently does not work.
Columns("F:F").Select
Selection.NumberFormat = "00000"

''Alternative method for keeping correct format of Product Code
' (with leading zeros) and searchable with Find window.
' Also not functioning.
Dim a
Dim l As Long

With Range("F2", "F" & lastUsedRow)
   .NumberFormat = "#"
   a = .Value
   For l = 1 To UBound(a, 1)
    a(l, 1) = Right("0000" & a(l, 1), 6)
   Next l
   .Value = a
End With

【问题讨论】:

【参考方案1】:

您尝试查找的单元格的实际值为9093,即使它通过格式化显示为09093find/replace 工具将查找字符串值09093,而实际值为9093,因此无法找到它。据推测,当您键入 09093 时,它会被格式化为文本而不是数字以保留前导 0。

如果您实际上不使用新创建的列中的数字进行分析,我可以建议下面的行。这样您就可以从Find/Replace 对话框中找到带有前导 0 的单元格,因为包括前导 0 在内的整个产品编号都是一个字符串。

Selection.NumberFormat = "@" 'This formats the selected cell as text

【讨论】:

感谢 SilentRevolution 有效。所以查找/替换窗口将任何要搜索的输入字符转换为字符串类型?这很有趣。 我不确定它的实际作用,但看起来确实是这样。

以上是关于格式化后查找/替换未找到单元格值的主要内容,如果未能解决你的问题,请参考以下文章

使用单元格的位置替换单元格值

VBA使用列中找到的格式查找并替换工作表中找到的所有单元格

用于查找单元格值是不是在范围内的双 For 循环

是否可以将电子表格数字格式应用于包含单元格值的单元格?

Python Pandas Dataframe 用同一会话的另一个单元格的值替换单元格值

使用单元格格式获取 JTable 整数单元格值