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

Excel 查找/替换格式化后未找到单元格值,excel,vba,Excel,Vba,在同一工作簿中,有一列值通过宏从一个Excel电子表格移动到另一个Excel电子表格。值应为五个字符,仅限数字,包括前导零 有几种方法可以成功地替换Excel自动格式化中丢失的前导零。结果很奇怪 对于宏已格式化单元格的每个单元格,Find/Replace工具拒绝识别任何包含零的搜索 示例: 宏之前=9093 宏后=09093 Find/Replace窗口将查找搜索值9093,但not将查找搜索值09093。在删除宏格式的09093并将0909093手动键入单元格后,一个Find/Replace窗

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

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

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

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

Find/Replace
窗口将查找搜索值
9093
,但not将查找搜索值
09093
。在删除宏格式的
09093
并将
0909093
手动键入单元格后,一个
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

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

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

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

谢谢你,这是一次成功的革命。那么“查找/替换”窗口将要搜索的任何输入字符转换为字符串类型?这很有趣。我不确定它实际上是这样做的,但看起来确实是这样。