【发布时间】: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
【问题讨论】: