Excel 查找/替换格式化后未找到单元格值
在同一工作簿中,有一列值通过宏从一个Excel电子表格移动到另一个Excel电子表格。值应为五个字符,仅限数字,包括前导零 有几种方法可以成功地替换Excel自动格式化中丢失的前导零。结果很奇怪 对于宏已格式化单元格的每个单元格,Excel 查找/替换格式化后未找到单元格值,excel,vba,Excel,Vba,在同一工作簿中,有一列值通过宏从一个Excel电子表格移动到另一个Excel电子表格。值应为五个字符,仅限数字,包括前导零 有几种方法可以成功地替换Excel自动格式化中丢失的前导零。结果很奇怪 对于宏已格式化单元格的每个单元格,Find/Replace工具拒绝识别任何包含零的搜索 示例: 宏之前=9093 宏后=09093 Find/Replace窗口将查找搜索值9093,但not将查找搜索值09093。在删除宏格式的09093并将0909093手动键入单元格后,一个Find/Replace窗
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
谢谢你,这是一次成功的革命。那么“查找/替换”窗口将要搜索的任何输入字符转换为字符串类型?这很有趣。我不确定它实际上是这样做的,但看起来确实是这样。