格式化

时间:2015-12-19 17:20:52

标签: excel-vba vba excel

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

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

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

  

示例:
  之前Macro = 9093
  在Macro = 09093之后

Find/Replace窗口会找到9093的搜索值,但会找到09093的搜索值。删除格式化为Find/Replace的宏并将09093手动键入单元格后,09093窗口会找到正面匹配。

我没有尝试对每个值进行代码检查以获得所需的字符数,然后连接前导零,直到达到正确的字符数。我的犹豫源于我的假设,即当必须经过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 个答案:

答案 0 :(得分:1)

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

如果您实际上没有使用新创建的列中的数字进行分析,我可以建议以下这一行。通过这种方式,您可以在Find/Replace对话框中找到前导0的单元格,因为包含前导0的整个产品编号是一个字符串。

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