2016-02-24 20 views
3

變化值我完全新的到Excel VBA,宏觀檢查行範圍值和另一個

我一直在貸款分期償還計劃,以幫助我和我的朋友們對任何貸款。

問題是貸款攤銷在一段時間讓我們說其中有239條支付線

它通過自動生成的最後一行20年,如果公式需要一些對帳,請參見下面

enter image description here

只要最後的預定付款小於實際支付的價款是6309,則計劃付款應等於2711 + 4

enter image description here

我可以創建任意宏來完成這個邏輯:(我不是一個VBA專家

我一直在努力,沒有運氣編輯此代碼,這是最接近我可以跟你幫助,請假設下

Private Sub CommandButton23_Click() 

    Dim r1, r2, n As Long 
    Dim Pay_Num As Integer, result As String 
    Pay_Num = Range("D34").Value 

    With Sheets("LOANQUIC & Schedule Table") '~~> change to suit 
     Dim lrow As Long 
     Number_of_Payments = Range("G20").Value 
     lrow = .Range("A" & .Rows.Count).End(xlUp).Row 
     r1 = Application.Transpose(.Range("A2:A" & lrow)) 
     r2 = Application.Transpose(.Range("J2:J" & lrow)) 
     For n = LBound(r1) To UBound(r1) 
      If r1(n) <> "" Then r2(n) = r1(n) 
      If r1(n) = Number_of_Payments Then Sched_Pay = Number_of_Payments 
      Range("D35").Value = Sched_Pay 
     Next 
     .Range("J2:J" & lrow) = Application.Transpose(r2) 
    End With 

End Sub 

回答

0

工作,根據你的榜樣,那最後一行將始終包含您的最後一次付款,你可以作出值的快速檢查,並在最後的付款金額填寫:

Option Explicit 

Sub Example1() 
    Dim ws As Worksheet 
    Dim lastRow As Long 
    Dim begBalColumn As Long 
    Dim schedPayColumn As Long 
    Dim interestColumn As Long 
    Dim endBalColumn As Long 

    '--- you can automatically set these values if needed 
    begBalColumn = 3 
    schedPayColumn = 4 
    interestColumn = 6 
    endBalColumn = 7 

    '--- assumes the last row has your last payment 
    Set ws = ActiveSheet 
    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row 

    With ws 
     If .Cells(lastRow, begBalColumn).Value < _ 
       .Cells(lastRow - 1, schedPayColumn).Value Then 
      .Cells(lastRow, schedPayColumn).Value = .Cells(lastRow, begBalColumn).Value + _ 
                .Cells(lastRow, interestColumn).Value 
     End If 
    End With 
End Sub 

否則,它不是很明顯,爲什麼你需要掃描分期付款表中的所有行才能找到最後一行。

或者,你也可以在你的例子使用公式單元格G5

=IF(C5<D4,C5+F5,D4) 
相關問題