2012-03-14 109 views
0

我想创建一个宏来编辑我的错误ERP数据包生成的价格表。我目前得到175,42 $等,我想将它们四舍五入到175.4 $(取决于第二位小数)。Excel VBA - 圆形函数

J   K 
175,42  175,4 
193,76  193,8 

dim i as integer 
For i = 16 to 25 
    Range("K" & i).Select = "=ROUND(J & i;1)" 
Next i 

所以我想这应该通过K16运行:K25和使用功能全面,但它似乎给一个错误,我猜它的功能全面。

回答

2

试试这个。 VBA有自己的Round功能。

现在经过测试和为我工作!

dim i as integer 
For i = 16 to 25 
    Range("K" & i) = Round(Range("J" & i), 1) 
Next i 
+1

重要的是要注意的是,VBA'回合()'函数的行为不同的Excel是重要的'Round()'工作表函数。 '在VBA = 2中舍入(2.5,0),其中'WorksheetFunction.Round(2.5,0)'= 3 – markblandford 2012-03-14 09:23:50

+0

好点。把1作为第二个参数,就像我上面所做的那样,我相信这是汤姆想要的。它会根据第一个小数进行舍入。 – mattboy 2012-03-14 09:29:43

+0

这对我来说工作得很好,我认为有人将0更改为1,将它舍入到小数点后1位? – CustomX 2012-03-14 09:56:21

3

更改您的代码

Range("K" & i).Formula = "=ROUND(J" & i & ";1)" 
+0

+1打我吧:) – 2012-03-14 09:19:31

+0

将';'改成'',然后它就起作用:) – CustomX 2012-03-14 09:58:37

1

试试这个(UNTESTED

Sub Sample() 
    Dim i As Integer 
    For i = 16 To 25 
     Sheets("Sheet1").Range("K" & i).Formula = "=ROUND(J" & i & ",1)" 
    Next i 
End Sub 
+0

当我以这种方式运行它时,我得到了应用程序定义或对象定义的错误,循环。 (与克里斯同样的问题) – CustomX 2012-03-14 09:53:53

+1

更新我的文章。用逗号来试试 – 2012-03-14 09:55:40

+0

这就是我上面所说的;) – 2012-03-14 10:00:14