Как функция в VBA может изменить номер строки аргумента? - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь создать пользовательскую функцию в VBA в Excel. Это мой первый раз.

Я хочу определить, какую выгоду получит обычный человек (если бы наше правительство расширило социальную помощь в ответ на блокировку по счету 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...