Я пытаюсь создать таблицу амортизации, в которой процентная ставка зависит от двух входных данных, предоставленных пользователем.
X представляет строки, а Y представляет столбцы. Значения X, Y и процентных ставок уже установлены в таблице 4 X 6. Например, если пользователь вводит X=2 и Y=3, процентная ставка будет определена как 5%.
Функция ЕСЛИ может работать, но требует много времени и неэффективна.
Я рассматривал возможность использования массива и думаю, что Vlookup будет наиболее эффективным. В Excel я использовал Vlookup вместе с Match, и это сработало, но мне трудно перевести его в код VBA.
Option Explicit
Sub Amortisation()
Dim intRate, loanLife, initLoanAmt
Dim yrBegBal, intComp, prinComp, yrEndBal, annualPmt
Dim outRow, rowNum, outsheet
outRow = 3 'output table begins from row 4
outsheet = "loan amort"
Worksheets(outsheet).ActivateDo
loanLife = InputBox("Enter loan life." _
& " Loan life must be a whole number")
If loanLife < 0 Or (loanLife - Round(loanLife) <> 0) Then
MsgBox ("Loan life must be a whole number.")
End
End If
initLoanAmt = InputBox("Enter loan amount." _
& " Loan amount must be a positive whole number")
If initLoanAmt < 0 Or (initLoanAmt - Round(initLoanAmt) <> 0) Then
MsgBox ("Loan amount must be a positive whole number.")
End
End If
End Sub
Вместо того, чтобы запрашивать процентные ставки, как я сделал с другими входными данными, я хочу, чтобы VBA использовал предоставленные входные данные для выбора процентной ставки из таблицы ниже.
Итак, если X (срок кредита) равен 5, а Y (initloanamount) равен 700, то я хочу, чтобы VBA использовал 10 в качестве ставки.
После этого я могу продолжить работу с таблицей амортизации, используя функцию PMT.