请帮我毁掉我儿子的假期!(我让他学习数学)。
他必须做大量的几何练习,所以我想用 Excel 来跟踪进度:对于他做的每道题,我都会使用两个单元格:一个用于跟踪他开始做题的时间,另一个用于存储他做题所花的时间。这样我就可以跟踪他的进度,还可以通过向他的老师证明他确实付出了一些努力来做一些社会工程。
现在,假设我们有单元格 A1、B1 和 C1 专门用于第一个问题。我的想法是,当他开始做题时,他会将当前时间输入到单元格 A1。当他停止做题时,他会将当前时间输入到单元格 B1。然后 C1 将通过从 B1 中减去 A1 来计算并存储持续时间。(版本 2 可能会在单元格中放置一个按钮,这样单击一次就会填充 A1,再次单击会将值存储在 B1 中并计算 C1 :))
但是,如果我执行 A1=NOW(),时间就不是一个值,而是一个“不断更新”的公式。我想要的是执行 A1=我儿子开始处理问题时 NOW 的返回值。
我该怎么做呢?
答案1
Ctrl+;将当前日期作为固定值插入单元格。与 结合Shift可获取当前时间。
笔记:
这是针对标准美国键盘布局的。在其他键盘布局中,组合可能不同;例如,在标准德国键盘布局中,它是.而不是;。
答案2
我更喜欢带有按钮的想法,因此这里有一些可以使用的代码:
Global i As Integer
Sub Button1_Click()
ActiveSheet.Shapes(1).Select
If Selection.Characters.Text = "Start" Then
i = 1
Do Until IsEmpty(Range("A" & i).Value)
i = i + 1
Loop
Range("A" & i).Value = Now()
ActiveSheet.Shapes(1).Select
Selection.Characters.Text = "Stop"
Range("A" & i).Select
ElseIf Selection.Characters.Text = "Stop" Then
Range("B" & i).Value = Now()
Range("C" & i).Value = DateDiff("s", Range("A" & i).Value, Range("B" & i).Value)
ActiveSheet.Shapes(1).Select
Selection.Characters.Text = "Start"
Range("C" & i).Select
End If
End Sub
我的 Excel 编程技能可能不完美或不高效,但对于此目的来说应该足够了。请确保不要忘记全局变量。这还假设您的第一个按钮是保存此代码的按钮(并且它上面有文本“Start”)。自动计算所用时间(以秒为单位)。