如何在 Excel VBA 中进行简单的数学运算

如何在 Excel VBA 中进行简单的数学运算

任何单元格中都有一个大于 60 的值。为了达到我的目的,我需要从这些值中减去 60,直到值小于 60。因此,例如,假设我有一个单元格包含 1000 的值。我想要使用的值是 40,因为 40 是反复减去 60 后第一个小于 60 的值。

我设想一个 VBA 解决方案,它会反复减去 60,然后停止并显示最终值 40,因为这满足条件。

数据范围很大,大于 60 的值可能出现在该范围内的任意位置。我希望在打开电子表格时自动完成此操作,以便所有可能引用大于 60 的值的公式都使用余数。

答案1

您不需要 VBA 即可完成您想要的操作。您想要反复减去 60,直到余数小于 60。您可以编写 VBA 代码来执行此操作,但您可以使用公式一步完成此操作:

    =MOD(ED1,60)

如果将 1000 除以 60,则会得到 16.666... 这意味着您需要减去 60 十六次才能得到小于 60 的数字。MOD 函数会得出除法后的余数(在本例中为 40),这相当于这些减法。

您可以通过两种方式使用它。一种是将此 MOD 表达式(不带等号)合并到公式中,代替对可以超过 60 个数据单元格的简单单元格引用。这将使用翻译后的值。

如果您有许多引用每个单元格的公式,并且不想产生重复计算相同值的开销,请创建一组翻译值——包含上述公式的重复数据范围。这将翻译一次数据,然后您的所有公式都可以引用这些数字而不是原始数据。如果您不想产生刷新这些计算的开销,请执行复制 | 粘贴特殊 | 值。您可以将结果粘贴到原始数据上,然后删除中间计算。

答案2

我有个好消息!因为ED1是一个常数,该公式总是会得出以下值:

960

假设长距离是A1:Z100

这里是虚拟专用网络基于解决方案:

Private Sub Workbook_Open()
    Sheets("Sheet1").Range("A1:Z100").Value = 960
End Sub

这是一个工作簿事件宏。

因为它是工作簿代码,所以安装和使用非常容易:

  1. 右键单击菜单栏上文件左侧的 Excel 小图标
  2. 选择查看代码-这将打开一个 VBE 窗口
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除宏:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有关事件宏(工作簿代码)的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm

必须启用宏才能使其工作!

相关内容