Вопрос или проблема
Вводите дату и время в Excel в формате mm:ss (просто вводите цифры без двоеточия : и 0: часов впереди)
Здравствуйте, я работаю над проектом и мне нужно рассчитать количество минут и секунд, которые люди работали.
*Я нашел похожий вопрос, но хотел бы упростить формат. (Объясню внизу)
Проблема в том, что когда ввожу 38:14, это означает 38 минут и 14 секунд, ячейка распознает это как 38 часов и 14 минут, и если я дважды щелкну… вот что я получаю… 1900-01-01 2:14:00
Я понимаю причину, но я хочу формат, который мог бы распознавать числа как минуты и секунды.
Я нашел ответ, который кажется простым и легким, но я не могу понять, как его заставить работать…
“Peter Albert дал решение по этой ссылке. Мне нравится его ответ, просто нужно следовать простым указаниям, скопировать и вставить, но у меня это не получается”
вот его ответ.
Есть решение! Разместите этот код VBA в модуле вашего листа:
Откройте редактор Visual Basic (Alt-F11) В верхнем левом дереве дважды щелкните на листе, где вы хотите ввести время В центральной панели кода поместите нижеуказанный код. Закройте 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
===================================================
*Теперь версия, которая мне нужна, это когда я ввожу 4 цифры, я хочу, чтобы первые 2 были признаны как минуты, а последние 2 как секунды… Это помогло бы мне сэкономить время на ввод : двоеточия.
так, когда я ввожу 3814, это будет признано как 38 минут и 14 секунд в ячейке, и будет автоматически форматировано как 38:14.
конечно, даже если это будет больше 60 минут, я бы хотел, чтобы отображались только минуты.
Ячейки, к которым я хочу применить эти условия, находятся от G13 до G104.
Заранее спасибо.
Сначала очистите ячейки ввода данных и форматируйте их как Текст.
Затем установите этот макрос события в область кода листа:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Intrsct As Range, Cell As Range, s As String
Dim mins As Long, secs As Long, t As Date
Set Intrsct = Intersect(Range("G13:G104"), Target)
If Intrsct Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Cell In Intrsct
s = Cell.Text
If s = "" Then
Cell.NumberFormat = "@"
ElseIf Len(s) > 4 Then
Cell.Clear
Cell.NumberFormat = "@"
Else
s = Right("0000" & s, 4)
If s Like "####" Then
mins = CLng(Left(s, 2))
secs = CLng(Right(s, 2))
t = TimeSerial(0, mins, secs)
Cell.NumberFormat = "[mm]:ss"
Cell.Value = t
Else
Cell.Clear
Cell.NumberFormat = "@"
End If
End If
Next Cell
Application.EnableEvents = True
End Sub
Если вы вводите 1234, вы получите 12:34
Если вы вводите 1, вы получите 00:01
Если вы вводите:12, вы получите 00:12
Если вы вводите 123, вы получите 01:23
Если вы вводите 9999, вы получите 100:93
и так далее.
Помните:
Макрос будет работать только если ячейка для ввода очищена и отформатирована как Текст перед вводом данных в нее.
Ответ или решение
Конечно, я помогу вам с настройкой формата времени в Excel для ввода данных в формате "ммсс" без использования двоеточий. Это может быть полезным способом повысить эффективность ввода данных в проекте, где вам нужно учитывать минуты и секунды работы.
Настройка Excel для ввода времени в формате ммсс
-
Подготовка ячеек данных:
- Сначала необходимо удалить все данные из диапазона ячеек G13:G104 и изменить формат этих ячеек на "Текст". Это важно, так как при использовании числового ввода Excel может автоматически форматировать данные, что приведет к неправильной интерпретации.
-
Установка макроса:
- Откройте редактор Visual Basic, нажав
Alt
+F11
. - В левом дереве выберите лист, на котором находятся данные (чаще всего "Лист1" или другой программно назначенный лист).
- В центральной панели введите следующий код:
- Откройте редактор Visual Basic, нажав
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Intrsct As Range, Cell As Range, s As String
Dim mins As Long, secs As Long, t As Date
Set Intrsct = Intersect(Range("G13:G104"), Target)
If Intrsct Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Cell In Intrsct
s = Cell.Text
If s = "" Then
Cell.NumberFormat = "@"
ElseIf Len(s) > 4 Then
Cell.Clear
Cell.NumberFormat = "@"
Else
s = Right("0000" & s, 4)
If s Like "####" Then
mins = CLng(Left(s, 2))
secs = CLng(Right(s, 2))
t = TimeSerial(0, mins, secs)
Cell.NumberFormat = "[mm]:ss"
Cell.Value = t
Else
Cell.Clear
Cell.NumberFormat = "@"
End If
End If
Next Cell
Application.EnableEvents = True
End Sub
-
Работа с макросом:
- Теперь, когда вы вводите значения времени, указывайте их в формате "ммсс". Например:
- Ввод
3814
преобразуется в38:14
(38 минут и 14 секунд). - Ввод
0907
будет преобразован в09:07
(9 минут и 7 секунд).
- Ввод
- Если вы попытаетесь ввести больше четырех цифр, ячейка автоматичеки очистится, ожидая формат "ммсс".
- Теперь, когда вы вводите значения времени, указывайте их в формате "ммсс". Например:
-
Проверка и исправления:
- Убедитесь, что функция автоматических событий (EnableEvents) включена для правильной работы макроса.
- Всегда проверяйте наличие ошибок в ячейках путем правильной работы с макросом, особенно при вводе данных.
-
Оптимизация и полезные советы:
- Используйте этот метод для точного отслеживания времени и минимизации риск ошибок.
- Помните, что для этого макроса ячейки должны быть пустыми и иметь текстовый формат до начала ввода данных.
- Данная настройка гибко адаптируется под ваш проект и ваши рабочие задачи.
С данным макросом и настройками вы сможете быстро и эффективно вводить и обрабатывать данные о времени с минимальными усилиями. Это решение ускорит обработку данных и уменьшит вероятность ошибок при вводе информации. Успехов в вашем проекте!