Пожалуйста, помогите мне испортить отпуск моего сына! (Я заставляю его изучать математику).

Ему нужно выполнить огромное количество упражнений по геометрии, поэтому я подумал, что буду использовать Excel для отслеживания прогресса: для каждого его вопроса я буду использовать две ячейки: одну для отслеживания времени, когда он начал работать над вопросом, и другой, чтобы сохранить время, которое потребовалось ему для работы над вопросом. Таким образом, я смогу отслеживать его успехи, а также немного заняться социальной инженерией, доказав своему учителю, что он действительно приложил некоторые усилия.

Теперь, скажем, у нас есть ячейки A1, B1 и C1, посвященные первому вопросу. Я думаю, что когда он начнет работать над вопросом, он введет текущее время в ячейку A1. Когда он перестанет работать над вопросом, он введет текущее время в ячейку B1. Затем C1 вычислит и сохранит продолжительность, вычитая A1 из B1. (Возможно, в версии 2 будет размещена кнопка в ячейке, чтобы один щелчок по ней заполнил бы A1, повторное нажатие сохранит значение в B1 и вычислит C1 :))

Однако, если я сделаю A1 = NOW(), время будет не значением, а формулой, которая "постоянно обновляется". Я хочу сделать A1 = возвращенное значение NOW, когда мой сын начал обрабатывать вопрос.

Как мне это сделать?

2 ответа2

3

Ctrl + ; вставит текущую дату в ячейку как фиксированное значение. Объедините с Shift, чтобы получить текущее время.

Источник: http://office.microsoft.com/en-us/excel-help/insert-the-current-date-and-time-in-a-cell-HP003056107.aspx#BMinsert_a_static_date_or_time

Замечания:

Это для стандартной раскладки клавиатуры США. На других раскладках клавиатуры комбинация может быть другой; например со стандартной немецкой раскладкой клавиатуры это . вместо ; ,

1

Мне больше нравится идея с кнопкой, поэтому вот код, который вы можете использовать с этим:

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 могут быть не идеальными или эффективными, но для этого этого должно быть достаточно. Убедитесь, что вы не забыли глобальную переменную. Это также предполагает, что ваша первая кнопка - та, что содержит этот код (и для начала на нем есть текст "Старт"). Автоматически рассчитывает время, используемое в секундах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .