Excel VBA在整数末尾附加逗号,不自动更改格式

Excel VBA在整数末尾附加逗号,不自动更改格式,excel,vba,Excel,Vba,我目前的项目是重写一个98年编写的程序。他们的解决方案是在Excel中做一些,在Word中做下一部分,然后在第三步返回Excel。该程序同步2个文件,它们的解决方案对于需要同步的20个文件来说非常好——然而,现在大约有1000个文件需要同步——所以我正在努力简化这个过程。文件的输出范围在X.X和X.XXXXX之间-我用 Columns("A:A").Select Selection.NumberFormat = "0.00000" 使文件更易于阅读。但第

我目前的项目是重写一个98年编写的程序。他们的解决方案是在Excel中做一些,在Word中做下一部分,然后在第三步返回Excel。该程序同步2个文件,它们的解决方案对于需要同步的20个文件来说非常好——然而,现在大约有1000个文件需要同步——所以我正在努力简化这个过程。文件的输出范围在X.X和X.XXXXX之间-我用

Columns("A:A").Select
Selection.NumberFormat = "0.00000"
使文件更易于阅读。但第二部分是附加一个逗号,然后是一个关于数字关系的字母:对于手头的问题不需要。当我尝试附加逗号时,Excel会尝试修复它并错误地输出它。例如:

0.42400

0.87200

1.31600

1.75200

变成:

.424

.872

1.316

1.752

它应该停留在X.XXXXX的时间。以下是我尝试过的:

更改Excel的选项,使十进制标识符为“.”,千位数为“:”。 `RangeA&ictr=格式RangeA&ictr&, Selection.NumberFormat=0.00000, 其他论坛/谷歌/必应 我真的假设这可以在Excel中完成,我只是找不到一个解决方案,除了重新打开Word,然后返回Excel


有什么想法吗?

您可以插入一列并使用公式。像这样的东西应该有用

Dim TotalRows As Long
TotalRows = ActiveSheet.UsedRange.Rows.Count

Columns("B:B").Insert

With Range(Cells(1, 2), Cells(TotalRows, 2))
    .Formula = "=LEFT(""'""&A1&REPT(""0"",5),7)"
    .Value = .Value
End With

Columns("A:A").Delete

既然你说

第二部分是附加一个逗号,然后是一个关于数字的字母 关系

您将需要一个公式,而不仅仅是一个格式选项。在VBA代码中,选择原始值旁边的单元格,然后添加以下代码行:

Selection.FormulaR1C1 = "=TEXT(RC[-1],""#0.00000"") & "","""

这将获得格式和逗号,而不管小数点左侧数字的长度如何-但要添加最后一个字母,您显然必须修改公式以满足您的特定需要。

非VBA解决方案是在单独的列中使用公式=A1&REPT0,5-LENA1&。此解决方案有效,谢谢。但是,我不确定“.Formula”在做什么,所以我必须对此进行研究。谢谢。它正在添加公式=LEFT'&A1&REPT0,5,7。Left将字符串修剪为7个字符,A1从单元格A1获取文本,Rept将字符0重复5次。在数字前面加上“前缀”的原因是,内容被视为一个字符串。实际上,在进一步查看文件后,似乎有十个和数百个。所以它可能是X.XXXXX到XXXXX.XXXXX,-XXXXX必须保留:/你能解释一下RC[-1]的作用吗?我没有使用R1C1引用,我假设我可以做选择。公式,对吗?还有,有没有办法在最后一行停止它?它给了我10万多行..:/RC[-1]只指向使用左侧单元格的公式。换句话说,如果你在D3单元,RC[-1]指的是C3单元。它不在Excel的网格中使用,但是,当您在VBA中编程时,大多数情况下您都希望使用像这样的相对引用。停止它完全取决于您的代码以及您选择的范围。它与设置数字的格式完全无关,这是最初的问题。如果你需要帮助,可以问一个新问题。是的,在我发布之后,我看到了它在做什么。谢谢你的建议。