Nig*_*ens 4 excel vba excel-vba
我正在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
Run Code Online (Sandbox Code Playgroud)
Y是输出的行,我通常设置它
Y = (Field -1) mod 10
Run Code Online (Sandbox Code Playgroud)
但是我把它留了下来
Y = Field - 1
Run Code Online (Sandbox Code Playgroud)
在结果工作表中更清楚地说明这一点.
通道应该是输出的列.
当我运行这个宏时,值1-6被放入A列,然后7-15被放入B列,16-26被放入C列,然后是D列27-35,E列36-40 .
我的预期是1-10值进入A列,11-20进入B列,21-30进入C列,31-40进入D列.
我习惯于C和C++,如果我将整数除以另一个整数,则使用整数数学计算结果.VBA有什么不同?
Dan*_*iel 11
使用"整数数学" \代替分组使用/.
整数科
划分项目意味着将其切割成设定值的碎片或分数.因此,除法用于得到一个数的分数.Visual Basic语言为除法提供了两种类型的操作.如果希望操作结果为自然数(称为整数),请使用反斜杠运算符"\"作为除数.使用的公式是:
Value1 \ Value2此操作可以在两种类型的有效数字上执行,包括或不包含小数部分.操作后,结果将是一个自然数.
Decimal Division /
第二种类型的除法产生十进制数.使用正斜杠"/"执行.其公式为:Value1 / Value2执行操作后,结果为十进制数.