在Excel

时间:2016-04-16 11:21:23

标签: excel vba

我在Excel中有资产负债表,我想要处理两个列,一个是分期付款,另一个是日期。

因此,如果分期付款的价值减少1,则日期月份应增加1,例如:

分期付款日期

2 2/1/2010

然后如果它变为

分期付款日期

1 2/2/2010

分期付款减少一个,日期增加一个月

那么如何通过公式或VBA来实现excel

谁能告诉我?

2 个答案:

答案 0 :(得分:0)

试试这个

放在你的"余额"工作表代码窗格以下代码

Option Explicit

Public myVal As Long
Public installmentRng As Range

Private Sub Worksheet_Activate()
Set installmentRng = Me.Range("A1:A1000") ' <== here set the range that contains installment values
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim installmentChange As Long

Application.EnableEvents = False
With Target
    If Not Intersect(.cells, installmentRng.SpecialCells(xlCellTypeConstants)) Is Nothing Then
        installmentChange = Target.Value - myVal
        .Offset(, 1) = WorksheetFunction.EDate(.Offset(, 1), -installmentChange)
        myVal = Target.Value
    End If
End With
Application.EnableEvents = True

End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target.cells, installmentRng.SpecialCells(xlCellTypeConstants)) Is Nothing Then myVal = Target.Value
Application.EnableEvents = True
End Sub

如您所见,您只能定义包含&#34;分期付款的范围&#34;第一个子第一个语句中的值,即:

Set installmentRng = Me.Range("A1:A1000")' <== here set the range that contains installment values

从那时起,您可以在&#34;分期付款&#34;值

答案 1 :(得分:0)

我找到了一个可行的解决方案。这需要我测试的2个日期。

例如:A1 =原始安装日期,B1 =更改的安装日期。然后你可以试试这个功能:

=IF(B1<A1,DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)),DATE(YEAR(A1),MONTH(A1),DAY(A1)))

正如您在函数中看到的那样,根据您选择的单元格添加了一个月(A1)。关于这一点的简单部分是您可以根据需要添加或减去日期的每个部分。希望这会有所帮助。