首页 > 解决方案 > VBA 中的函数如何修改参数的行号?

问题描述

我正在尝试在 Excel 中的 VBA 中创建自定义函数。这是我的第一次。

我想根据收入分配的九个不同十分位数的数据来确定一个普通人将获得的好处(如果我们的政府扩大社会援助以应对 covid-19 封锁)。我已经调用了在每个十分位找到授权onerow的函数,以及对这些进行平均的函数UIFavg

在我的 Excel 文件中,十分位数列在一列中,因此我只想使用顶部的单元格作为参数。这需要我找到firstrow参数的行,然后将其他九个点的行号加 1。不幸的是,我不知道如何规定函数应该以这种方式用于各种十分位数的行号。我不知道如何搜索文档

我在下面展示了我的尝试。你知道如何断线吗?

Public Function onerow(decile As Double, propzero As Double, propupper As Double, upperbound As Double, natminwage As Double)
    If decile < upperbound Then
        If decile < natminwage Then
            onerow = (propzero - (propzero - propupper) / upperbound * decile) * natminwage       'UIF benefit at the minimum wage
        ElseIf decile >= natminwage Then
            onerow = (propzero - (propzero - propupper) / upperbound * decile) * decile
        End If
    Else
        onerow = propupper * upperbound   'Maximum benefit (for those who earn above the upper limit)
    End If
End Function

Public Function UIFavg(firstrow As Double, secondrow As Double, thirdrow As Double, fourthrow As Double, fifthrow As Double, sixthrow As Double, seventhrow As Double, eighthrow As Double, ninthrow As Double, propzero As Double, propupper As Double, upperbound As Double, natminwage As Double)
UIFavg = (1.5 * onerow(firstrow, propzero, propupper, upperbound, natminwage) + onerow(secondrow, propzero, propupper, upperbound, natminwage) + onerow(thirdrow, propzero, propupper, upperbound, natminwage) + onerow(fourthrow, propzero, propupper, upperbound, natminwage) + onerow(fifthrow, propzero, propupper, upperbound, natminwage) + onerow(sixthrow, propzero, propupper, upperbound, natminwage) + onerow(seventhrow, propzero, propupper, upperbound, natminwage) + onerow(eighthrow, propzero, propupper, upperbound, natminwage) + 1.5 * onerow(ninthrow, propzero, propupper, upperbound, natminwage)) / 10
End Function

标签: excelvbafunctioncell

解决方案


推荐阅读