Введите продолжительность времени в Excel в формате мм сс (без часов и двоеточий)

Вопрос или проблема

Вводите дату и время в 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 для ввода времени в формате ммсс

  1. Подготовка ячеек данных:

    • Сначала необходимо удалить все данные из диапазона ячеек G13:G104 и изменить формат этих ячеек на "Текст". Это важно, так как при использовании числового ввода Excel может автоматически форматировать данные, что приведет к неправильной интерпретации.
  2. Установка макроса:

    • Откройте редактор Visual Basic, нажав Alt + F11.
    • В левом дереве выберите лист, на котором находятся данные (чаще всего "Лист1" или другой программно назначенный лист).
    • В центральной панели введите следующий код:
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
  1. Работа с макросом:

    • Теперь, когда вы вводите значения времени, указывайте их в формате "ммсс". Например:
      • Ввод 3814 преобразуется в 38:14 (38 минут и 14 секунд).
      • Ввод 0907 будет преобразован в 09:07 (9 минут и 7 секунд).
    • Если вы попытаетесь ввести больше четырех цифр, ячейка автоматичеки очистится, ожидая формат "ммсс".
  2. Проверка и исправления:

    • Убедитесь, что функция автоматических событий (EnableEvents) включена для правильной работы макроса.
    • Всегда проверяйте наличие ошибок в ячейках путем правильной работы с макросом, особенно при вводе данных.
  3. Оптимизация и полезные советы:

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

С данным макросом и настройками вы сможете быстро и эффективно вводить и обрабатывать данные о времени с минимальными усилиями. Это решение ускорит обработку данных и уменьшит вероятность ошибок при вводе информации. Успехов в вашем проекте!

Оцените материал
Добавить комментарий

Капча загружается...