Ввод данных времени в формате Excel в формате мм: сс (без начального 0: для часов)


16

Я хочу ввести данные о времени в таблицу Excel в формате мм: сс. Проблема в том, что, хотя формат ячейки: mm: ss, если я введу данные следующим образом:

12:33 фактическое сохраненное значение составляет 12 часов 33 минуты. если я хочу 12 минут и 33 секунды, мне нужно 0:12:33

Есть ли способ заставить ячейку принимать 12:33 как мм: сс?


2
Чтобы отобразить минуты больше 59, отформатируйте ячейку как [MM]:SS. Как: 02:10:45тогда будет отображаться как 130:45вместо. Но, видимо, это не работает для входов.
Арджан

Ответы:


6

Время вводится в формате Часы: Минуты: Секунды, поэтому вы не можете изменить этот формат ввода. Очевидно, вы можете изменить формат отображения, но, к сожалению, вам необходимо соблюдать формат ввода.


похоже, что нет решения моей проблемы, так как даже использование скриптов не поможет, так как форматирование маскирует то, что пользователь фактически печатает.
Дани

Так это универсальный формат hh:mm:ssили h:mm:ss? @Steve
Шаян

Я бы сказал, что это h:mm:ss@Shayan
Стив

14

Как ответил Стив , Excel интерпретирует ввод пользователя 12:33как 12х33м. Вы не можете изменить это поведение того, как Excel принимает пользовательский ввод.

Как вы упомянули в комментарии, пользователи будут вводить, 12:33но это означает 12m33s.

Вот обходное решение, чтобы получить правильное значение для расчета.

  1. Отформатируйте ячейку A1 (пользовательский ввод, например 12:33) как[h]:mm
  2. Введите формулу =A1/60в ячейку B1
  3. Отформатируйте ячейку B1 как [m]:ss

Отображаемое значение должно быть одинаковым в A1 и B1. Тем не менее, B1 будет фактическим значением, которое вы хотите .


2
Ницца. Или: отформатируйте ввод как строковое / текстовое значение и используйте что-то вроде TIMEVALUEпреобразования .
Арджан

1
Отображаемые значения в A1 и B1 не совпадают, если мм> 23
Alaa M.

1
@AlaaM. спасибо за то, что нашли. ответ обновляется, чтобы исправить проблему. использование [h]и[m]
Вильсон

3

Есть решение! Поместите этот код VBA в свой модуль рабочего листа, то есть:

  1. Откройте редактор Visual Basic ( Alt- F11)
  2. В левом верхнем углу дерева дважды щелкните по листу, который вы хотите ввести свое время
  3. На центральной панели кода разместите приведенный ниже код.
  4. Закрыть VBE

Используйте этот код:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value < 0 Or Target.Value > 1 And Target.NumberFormat <> "h:mm" Then Exit Sub
    Application.EnableEvents = False
    Target.Value = Target.Value / 60
    Target.NumberFormat = "mm:ss"
    Application.EnableEvents = True
End Sub

Если вы уже отформатировали диапазон, в который вводите данные, используйте эту строку вместо первой:

If Target.Value < 0 Or Target.Value > 1 Then Exit Sub

Обратите внимание, что это изменит значение и формат - каждый раз, когда вы вводите время - или что-то между 0 и 1! Если вы хотите ограничить его определенным столбцом, добавьте эту строку:

If Target.Column <> 3 Then Exit Sub

или эта строка, чтобы ограничить его до определенного диапазона

If Intersect(Target, Range("A2:A100") Is Nothing Then Exit Sub

2

Самый простой способ отработать часы

Отформатируйте ячейку (A1) hh:mm

Введите как обычно ( 07:22)

Форматировать ячейку (B1) hh:mm

Введите как обычно ( 16:00)

Форматировать ячейку (C1) h:mm

Введите все данные в ячейку (C1) следующим образом: =(A1+B1)/60


1

Выделите ячейку (я) / столбец, который вы хотите в качестве продолжительности, щелкните правой кнопкой мыши «Формат ячеек». Перейдите в «Custom» и найдите «h: mm», если вы хотите ввести продолжительность в формате часов и минут. Если вы также хотите включить секунды, нажмите «ч: мм: сс». Вы даже можете добавить общую продолжительность после этого.

Надеюсь это поможет.


1

Я считаю, что лучше всего ввести минуты в столбце A, а затем секунды в столбце B. Затем вы можете суммировать столбцы. Все как обычный числовой формат.

Затем переведите секунды> 60 в минуты, разделив сумму в столбце B на 60, добавив INT к сумме столбца A и оставив остаток MOD в столбце B.

В качестве альтернативы вы можете использовать col C в качестве десятичного числа, если формула = (A1+(B1/60))даст десятичные минуты. В нижней части столбца C введите сумму, а затем примените формулу для преобразования десятичной части обратно в секунды, как указано ниже.C22C23 введите , где содержится сумма, затем в формуле ввода =MOD(C22,1)*60.

Теперь A23введите формулу, =INT(C22)чтобы отобразить Общее количество минут, в том числе из суммы в C22.


1

У меня была та же проблема, и вот решение, которое я нашел: введите формулу, используя TIMEфункцию, которая создает временную матрицу =TIME(H,M,S)и отформатируйте ее, как вам удобно. Вы все еще должны вводить 0 часов каждый раз, потому что математика, но это делает все это бесконечно более работоспособным.


0

Решение выше. При использовании h:mmформата Excel не позволит вам превысить 23. Добавьте скобки к часам в вашем формате[h]:mm и вы можете перейти выше 23.

Чтобы вычислить значение в секундах, установите для ячейки «общий» числовой формат, а затем введите следующую формулу

=HOUR(A1)*60+MINUTE(A1)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.