合并列VBA时不会粘贴前导零

Posted

技术标签:

【中文标题】合并列VBA时不会粘贴前导零【英文标题】:Leading zeros won´t paste when merging columns VBA 【发布时间】:2017-05-08 07:40:30 【问题描述】:

我需要使用两列的信息来构建数字,如下所示:

-4 24296 -4.24296 -4 20320 -4.20320 -4 16356 -4.16356 -4 12410 -4.12410 -4 08500 -4.08500 -4 04619 -4.04619 -4 00739 -4.00739

这是我用来合并值的例程:

Range("R3").Select

Do While ActiveCell <> ""
    ActiveCell.Offset(0, 1).FormulaR1C1 = _
        ActiveCell.Offset(0, -1) & "." & ActiveCell.Offset(0, 0)
    ActiveCell.Offset(1, 0).Select
Loop

问题是这个例程忽略了前导零,即使我让程序显示它们:

Worksheets("Data").Columns("R").NumberFormat = "00000"

这是我的程序给我的输出:

-4 24296 -4.24296 -4 20320 -4.20320 -4 16356 -4.16356 -4 12410 -4.12410 -4 08500 -4.85000 -4 04619 -4.46190 -4 00739 -4.73900

(最后三行错误)

谁能帮我解决这个问题?

谢谢,

【问题讨论】:

将数字构建为数字,而不是文本。 显示与值不同。通过更改格式以显示前导零,您对“R”列中的值本身没有做任何事情 【参考方案1】:

用这个代替ActiveCell.Offset(0, -1) &amp; "." &amp; ActiveCell.Offset(0, 0)

ActiveCell.Offset(0, -1) - ActiveCell.Offset(0, 0)/100000

【讨论】:

我在这里看到的唯一风险是 R 列中的值可能超过 5 个位置。那么这将是不正确的。可能更好地找到 R 中最大列的长度,并取该最大长度的 10^。但是,如果所有已知值都小于 99999,那么这是非常干净的。 @tigeravatar,这解决了前导零问题,但会导致另一个问题:我在 Q 列中有正数和负数。当 Q 列和当 Q 列为负数时减去。 ActiveCell.Offset(0, -1) + Sgn(ActiveCell.Offset(0, -1)) * ActiveCell.Offset(0, 0)/100000 解决签到问题。 @tigeravatar,也非常感谢!

以上是关于合并列VBA时不会粘贴前导零的主要内容,如果未能解决你的问题,请参考以下文章

VBA - 复制粘贴单词表而不合并

Excel VBA:粘贴到范围时未正确解释 ActiveCell

在 VBA 中使用循环复制和粘贴时如何跳过非数字值?

无法使用 VBA 粘贴到合并的单元格中

过滤列中的 VBA 粘贴公式

Excel / VBA:粘贴数据后自动调整列宽