VBA相当于Excel的mod函数

Arl*_*ler 36 excel vba excel-2007 excel-vba

有一个vba等同于excel的mod功能吗?

Vin*_*nie 57

在vba中,函数是MOD.例如

 5 MOD 2
Run Code Online (Sandbox Code Playgroud)

这是一个有用的链接.

  • +1"Mod"的VBA语言参考页面是[这里](http://msdn.microsoft.com/en-us/library/office/gg264708%28v=office.14%29.aspx) (5认同)
  • 请注意,使用负数时,Excel MOD 函数的计算方式与 VBA Mod 运算符不同。我刚刚用简单的整数发现了这一点。我希望在此页面上看到有关此问题的更多解释。在 VBA 中“11 Mod -5 = 1”,其中 Excel 的公式“MOD(11,-5) = -4” 在我的例子中,我决定使用本页显示的 XLMod() 函数而不是 Mod VBA 运算符。 (3认同)

egr*_*nin 34

你想要mod运算符.

The expression a Mod b is equivalent to the following formula:

a - (b * (a \ b))
Run Code Online (Sandbox Code Playgroud)

编辑添加:

您可能需要考虑一些特殊情况,因为Excel使用浮点数学(并返回a float),VBA函数返回一个整数.因此,使用mod浮点数可能需要额外注意:

  • 你最好改变`(a\b)`来修复(a/b)`.否则,您可能会遇到十进制参数问题.尝试使用'a = 1.75`和`b = 1`的公式,你会看到我的观点. (4认同)
  • @PSVSupporter 我认为您将 `\` 运算符与 `/` 混淆了。他们是不同的。 (2认同)

小智 8

MOD(a,b)在VBA中复制Excel的方法是XLMod(a,b)在包含该函数的VBA中使用:

Function XLMod(a, b)
    ' This replicates the Excel MOD function
    XLMod = a - b * Int(a / b)
End Function
Run Code Online (Sandbox Code Playgroud)

在您的VBA模块中


小智 7

使用Excel MOD(a,b)函数和VBA和Mod b运算符时要非常小心.Excel返回浮点结果,VBA返回整数.

在Excel = Mod(90.123,90)中返回0.123000000000005而不是0.123在VBA中90.123 Mod 90返回0

他们当然不等同!

相当于:在Excel中:= Round(Mod(90.123,90),3)返回0.123和In VBA :((90.123*1000)Mod 90000)/ 1000返回也是0.123