6

我正在 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 列,然后 27-35 放入 D 列,然后 36-40 放入 E 列.

我所期望的是值 1-10 进入 A 列,11-20 进入 B 列,21-30 进入 C 列,31-40 进入 D 列。

我习惯于 C 和 C++,如果我将一个整数除以另一个整数,则使用整数数学计算结果。VBA 有什么不同?

4

2 回答 2

14

使用“整数数学”进行除法\,而不是/.

整数除法\

分割项目意味着将其切割成设定值的碎片或部分。因此,除法用于获得一个数字相对于另一个数字的分数。Visual Basic 语言为除法提供了两种类型的操作。如果您希望运算结果是自然数,称为整数,请使用反斜杠运算符“\”作为除数。使用的公式是: Value1 \ Value2 可以对两种类型的有效数字执行此操作,带或不带小数部分。运算后,结果将是一个自然数。

Decimal Division /
第二种类型的除法产生一个十进制数。它使用正斜杠“/”执行。其公式为: Value1 / Value2 运算后,结果为十进制数。

资源

于 2013-05-29T12:47:12.563 回答
2

反斜杠用于整数除法,正斜杠用于小数除法。将正斜杠更改为反斜杠,您应该会得到预期的结果。

http://www.functionx.com/vbaexcel/Lesson04.htm

于 2013-05-29T12:44:47.967 回答