我正在Excel 2002中编写一个VBA宏来操作设备中的日期,该设备在4个通道中分别提供10个值。
当我尝试将整数除以另一个整数来计算行和列时,结果显示它正在使用银行家舍入,就好像它是一个浮点变量。
Sub TestRounding()
Dim Y As Integer
Dim Field As Integer
Dim Channel As Integer
ActiveWorkbook.Sheets.Add
ActiveWorkbook.ActiveSheet.Cells.Select
range("A1").Select
For Field = 1 To 40
Channel = (Field - 1) / 10
Y = Field - 1
ActiveSheet.range("A1").Offset(Y, Channel).Value = Field
Next Field
End Sub
Y是输出的行,我通常用
设置Y = (Field -1) mod 10
但是我把它留作了
Y = Field - 1
在结果工作表中更清楚地说明这一点。
频道应该是输出的列。
当我运行这个宏时,值1-6被放入A列,然后7-15被放入B列,16-26被放入C列,然后是D-中的27-35然后是36-40在E栏中。
我的预期是1-10值进入A列,11-20进入B栏,21-30进入C栏,31-40进入D栏。
我习惯于C和C ++,如果我将整数除以另一个整数,则使用整数数学计算结果。 VBA有什么不同?
答案 0 :(得分:11)
使用“整数数学”进行除法使用\
而不是/
。
整数部门\
划分项目意味着将其切割成一组或几个部分 值。因此,除法用于得到一分之一 另一个数字。 Visual Basic语言提供了两种 该部门的业务类型。如果你想要的结果 操作是一个自然数,称为整数,使用反冲 运算符“\”作为除数。使用的公式是:
Value1 \ Value2
可以使用或对两种类型的有效数字执行此操作 没有小数部分。操作后,结果将是a 自然数。
Decimal Division /
第二种类型的除法产生小数 数。使用正斜杠“/”执行。它的公式是:Value1 / Value2
执行操作后,结果为a 十进制数。
答案 1 :(得分:2)
反斜杠用于整数除法,正斜杠用于十进制除法。将正斜杠改为反斜杠,你应该得到你期望的结果。