Ввод данных времени в формате 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.