2014-12-20 19 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中的任何更改。祝您的项目好运。亲切的问候, –

相关问题