2016-04-16 28 views
0

我在excel中擁有我的資產負債表,有兩列我想工作,一個是分期付款,另一個是日期。在excel中更改值的更改日期

所以如果分期付款的價值得到一個日期,然後一個月減少應當由一個得到增加,例如:

分期付款日期

2 2010/2/1

那麼,如果它的變化到

分期付款日期

1 2010/2/2

分期付款減少一個和日期增加以一個月爲

所以如何它可以通過公式或VBA

有誰能夠告訴我,做到Excel?

+0

要監視單元格中的更改,然後根據更改進行調整,您需要使用VBA。 –

回答

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 

你看,你只能定義包含在第一子的「分期付款」值範圍首先聲明,即:

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

從此你可以讓你改變「分期付款」的價值觀

+0

幾件事情。 a)當打開工作簿並且該工作表已經是活動工作表時,Worksheet_Activate不會觸發; installmentRng將是**沒有**。 b)目標不超過單個細胞的補償;認爲行insert.c)Worksheet_Change中沒有錯誤控制,以確保事件是**總是**重新打開。參見[this](http://stackoverflow.com/questions/35025432/auto-fill-the-date-in-a-cell-when-change-is-made-into-an-adjacent-cell/35025830#35025830 )在其中的一些解決方案。 – Jeeped

+0

謝謝@Jeeped指出。所有這些問題都很容易解決:a)將選擇欄中的installmentRng設置移動到Worksheet_SelectionChange(以及Worksheet_Change中,如果將installmentRng值從其他工作表中更改)b)插入一些「If Target.Count = 1 Then ...」)檢查在行動之前c)在Worksheet_SelectionChange子開頭插入一些「On Error GoTo ErrHandler」,並在「Application.EnableEvents = True」語句之前插入標籤「ErrHandler:」。如果他需要答案,我會讓OP處理它... – user3598756

+0

是的,我甚至不清楚OP是否希望修改實際更改的日期,或者他/她是否意味着何時添加新的「分期付款」行。就後者而言,沒有提到「分期付款」的確定欄目;在前者的情況下,沒有提及分期付款編號或日期。總體而言,這只是一個糟糕的問題,並且可能無法以所提供的信息的任何準確度來回答。 – Jeeped

0

我爲您找到了可行的解決方案。這將需要我測試的兩個日期。

例如:A1 =原始安裝日期,B1 =更改的安裝日期。然後,你可以試試這個功能:

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

,你可以在函數中看到,一個額外的一個月是根據您選擇的單元格(A1)加入。關於這個簡單的部分是你可以根據需要添加或減去日期的每個部分。希望這可以幫助。