2014-12-20 45 views
0

A1 =時間開始使用CNTRL +移+表示上午04點如何查找Excel單元格中的以前值和當前值之間的差異?

B1 =時間結束使用CNTRL +移+表示8:00 AM

C1 =使用= MOD(B1-A1之間的時間, 1)示出了4點00分○○秒

D1 =時間從小區C1轉換成分鐘,同時使用= C1 * 1440表示240分鐘

E1 = D1新值 - D1舊值(示例:如果老值是240,新的是360,然後是360-240 = 120.)

大膽的是我想要的,我只希望你們能理解我正在努力完成的事情。如果需要的話,我會盡量做得更清楚。提前致謝!

+0

新的價值在哪裏?在下一行(D2)? – Mureinik

+0

新值將在E1上,其中包含從D1的新值中減去D1的舊值。 – Serendipitepic

+0

對不起,我還沒有關注。 「D1的新價值」是什麼意思? D1如何擁有多個價值? – Mureinik

回答

1

爲了找到輸入的新值和舊值之間的差異,例如在「D1」(在單元格更改事件中)並將其顯示爲單元格「E1」,通用解決方案顯示在以下代碼片段中(請參見列表1):

清單1

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Column = 4 And Target.Row = 1 Then 
     'new val 
     newVal = Range("D1").Value 
     Application.EnableEvents = False 
     Application.Undo 
     'old val 
     oldVal = Range("D1").Value 
     Range("D1").Value = newVal 
     'diff between new and old val 
     Range("E1").Value = newVal - oldVal 
     Application.EnableEvents = True 
    End If 
End Sub 

相關於您的特定情況下,在任一細胞 「A1」 或 「B1」,(假定時間通過按下組合CTRL+SHIFT+:輸入(或剛鍵入)的修改後的代碼片段如清單2所示。

清單2

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Row = 1 And (Target.Column = 1 Or Target.Column = 2) Then 
     'new val 
     a1 = Range("A1").Value 
     b1 = Range("B1").Value 
     newVal = Range("D1").Value 

     'disable events and undo 
     Application.EnableEvents = False 
     Application.Undo 
     'old val 
     oldVal = Range("D1").Value 

     'diff between new and old val 
     diff = newVal - oldVal 

     Range("A1").Value = a1 
     Range("B1").Value = b1 
     Range("E1").Value = diff 

     're-enable events 
     Application.EnableEvents = True 
    End If 
End Sub 

在一個單獨的說明,如果你使用一個公式像分鐘的差異您的工作表計算可以簡化:在一個單元格中輸入=MOD(B1-A1,1)*1440(例如「D1」)而不是使用該對(「C1」和「D1」)。另外,整個計算只能在VBA模塊中執行,根據「A1」和「B1」中的條目更新「E1」值(在這種情況下不需要「C1」和「D1」)。

希望這會有所幫助。最好的問候,

+1

很好地使用Target。 – peege

+0

你好亞歷克斯!只要將減去的值輸入到E1中就行。不幸的是,E1和D1只有在我手動輸入一個數字到D1時才起作用,D1忽略A1,B1和C1。 D1 = C1 * 1440並輸出空白。這大部分工作,但不想採取一個公式化的細胞的價值... – Serendipitepic

+0

@Serendipitepic:你好!正如我的解決方案所述,您可以使用與您的案例相關的任何邏輯來擴展此代碼段。該概念清楚地表明:使用Worksheet_Change事件和目標,其中可能包括單元格A1,B1和C1中的任何更改。祝您的項目好運。親切的問候, –

相關問題