格式化后查找/替换未找到单元格值
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
,即使它通过格式化显示为09093
。 find/replace
工具将查找字符串值09093
,而实际值为9093
,因此无法找到它。据推测,当您键入 09093
时,它会被格式化为文本而不是数字以保留前导 0。
如果您实际上不使用新创建的列中的数字进行分析,我可以建议下面的行。这样您就可以从Find/Replace
对话框中找到带有前导 0 的单元格,因为包括前导 0 在内的整个产品编号都是一个字符串。
Selection.NumberFormat = "@" 'This formats the selected cell as text
【讨论】:
感谢 SilentRevolution 有效。所以查找/替换窗口将任何要搜索的输入字符转换为字符串类型?这很有趣。 我不确定它的实际作用,但看起来确实是这样。以上是关于格式化后查找/替换未找到单元格值的主要内容,如果未能解决你的问题,请参考以下文章