合并列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) & "." & 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时不会粘贴前导零的主要内容,如果未能解决你的问题,请参考以下文章