vba中的数学方程

Posted

技术标签:

【中文标题】vba中的数学方程【英文标题】:Mathematical equation in vba 【发布时间】:2015-04-25 17:02:06 【问题描述】:

我有数学方程式,我在 Range("E7") 上的表格 "Accrued Expenses" 中执行。该公式打算循环直到C列中的最后一行 两个关键表是“起始页”“应计费用”

问题我无法进入 VBA 代码。它使用 Excel 宏记录器工作,但维护效率不高。我的方程式和代码如下。

=('Accrued Expenses'!C7*'Start page'!$F$5)/'Start page'!$F$13*'Accrued Expenses'!D7

Excel 记录器代码中并带有循环:

Option Explicit
Sub Calculating_Accruedexpense()
    Sheets("Accrued Expenses").Select
    Dim LastRow As Long
    LastRow = ActiveSheet.Range("C" & Rows.Count).End(xlUp).row
    Range("E7").Select
    Do Until ActiveCell.row = LastRow + 1
        If IsEmpty(ActiveCell) Then
            ActiveCell.FormulaR1C1 = _
                "=('Accrued Expenses'!RC[-2]*'Start page'!R5C6)/'Start page'!R13C6*'Accrued Expenses'!RC[-1]"
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

Excel 记录器行:

ActiveCell.FormulaR1C1 = _
            "=('Accrued Expenses'!RC[-2]*'Start page'!R5C6)/'Start page'!R13C6*'Accrued Expenses'!RC[-1]"

【问题讨论】:

您是否尝试将相同的公式放入您循环的每个单元格中?或者您是否希望公式中的范围引用针对循环中的每个单元格进行更改? @Alexp 在有绝对引用 ($) 的等式中,这些引用不会改变。但是,公式中的所有其他引用都会因循环中的每个单元格而改变。 您想要单元格中的实际公式还是只需要结果? 答案见下文 【参考方案1】:

试试这个:

Sub Calculating_AccruedExpense()
    Dim lastRow As Long, cl As Range

    lastRow = Worksheets("Accrued Expenses").Range("C" & Rows.Count).End(xlUp).Row

    For Each cl In Range("E7:E" & lastRow)
        If IsEmpty(cl) Then
            cl = (cl.Offset(0, -1) * Worksheets("Start page").Range("F5")) / Worksheets("Start page").Range("F13") * cl.Offset(0, -2)
        End If
    Next cl
End Sub

【讨论】:

以上是关于vba中的数学方程的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 中的数学方程拆分变量

替换包含特殊字符的文本中的行(数学方程)linux文本

线性化微分数学解释Einstein狭义相对论质能方程E=MC^2

Python小白的数学建模课-09 微分方程模型

C++ 数学与算法系列之高斯消元法求解线性方程组

教你用神经网络求解高级数学方程!