Преобразование часов и минут, сохраненных в виде текста в минуты, только с использованием VBA

У меня есть столбец, содержащий разные количества времени, то есть 1 час, 2 часа 30 минут, 30 минут и т. Д. Мне нужно преобразовать их в минуты. Моя идея – проверить количество символов, а затем сделать удаление.

Например, 1hr – 3 символа, поэтому, если проверка обнаружит, что 3 символа удаляет последний символ, * 60, и это даст мне переход на минуты.

Я исследовал проблему, и это мой код. В тот момент я просто пытаюсь заставить его изменить цвет ячеек в зависимости от количества символов внутри него. Это похоже на меня, но, очевидно, чего-то не хватает.

Заранее спасибо!

Sub lenCheck() Dim rng As Range Dim x As Integer Dim sht As Worksheet Set sht = Worksheets("Sheet2") x = sht.Cells(Rows.Count, "G").End(xlUp).Row For Each rng In sht.Range("G200:G" & x).Cells If Len(rng.Value) = 3 Then rng.EntireRow.Cells(1).Interior.Color = vbYellow ElseIf Len(rng.Value) = 4 Then rng.EntireRow.Cells(1).Interior.Color = vbGreen ElseIf Len(rng.Value) = 5 Then rng.EntireRow.Cells(1).Interior.Color = vbRed ElseIf Len(rng.Value) = 6 Then rng.EntireRow.Cells(1).Interior.Color = vbBlue End If End Sub 

Если вы хотите преобразовать эти строки в минуты, и они будут в разных форматах, как показано выше, я бы предложил использовать регулярные выражения для извлечения компонентов, а затем выполнить соответствующее сложение / умножение.

Следующий макрос VBA выглядит для тегов для любого из следующего: hr hour min (любое количество s s не имеет значения); (можно добавить другие теги), а затем возвращает количество минут: оно ищет столбец А, но это легко изменить

Если у вас есть разные шаблоны, чем то, что вы указали, они, возможно, также могут быть включены в регулярное выражение с минимальными усилиями (и минимальными изменениями кода)

Чтобы использовать этот алгоритм в качестве макроса, который преобразует содержимое столбца A, содержащего часы, минуты или и то, и другое, попробуйте это: (Обратите внимание, что «работа» выполняется в массиве, который, если у вас большой набор данных, будет быть быстрее, чем идти туда и обратно на рабочий лист с несколькими вызовами диапазонов)

====================================

 Option Explicit Sub ConvertToMinutes() Dim RE As Object, MC As Object Dim MN As Long Dim S As String Dim vSrc As Variant, rSrc As Range Dim I As Long 'Many ways to set the source data depending on your real setup Set rSrc = Range("a1", Cells(Rows.Count, "A").End(xlUp)) vSrc = rSrc Set RE = CreateObject("vbscript.regexp") With RE .Pattern = "(?:(\d+(?:\.\d+)?(?=\s*(?:hr|hour))))\D*(\d+(?=\s*min))?|(\d+(?=\s*min))" .Global = True .ignorecase = True For I = 1 To UBound(vSrc, 1) S = vSrc(I, 1) If .test(S) = True Then Set MC = .Execute(S) With MC(0) MN = .submatches(0) * 60 + .submatches(1) + .submatches(2) End With vSrc(I, 1) = MN End If Next I End With rSrc = vSrc End Sub 

==================================

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

введите описание изображения здесь

  • Объявление переменной с датой, найденной в листе, выпуск
  • Интерконвертирование POSIXct и числовое значение в R
  • Как подсчитать количество лет между двумя датами
  • Построение нескольких длительностей в Excel
  • Проблемы с VBA для управления мышью
  • Чтение значения времени excel с использованием API OpenXML
  • Отдельная дата и время в Excel
  • Поиск количества дней и времени между 2 датами / раз в excel
  • Отображение миллисекунд в Excel
  • Сумма времени в Excel, чтобы показать большое количество дней
  • Преобразование MM: SS.ms в секунды с использованием MS excel
  • Interesting Posts

    Подключиться к файлу Excel с помощью QODBC / QODBC3 Qt драйвера

    Excel Column Matching, затем выберите идентификатор столбца

    Предварительный просмотр или вставка на веб-страницу документа Excel, хранящегося в Azure Blob

    В Excel VBA на Windows, как смягчить проблему точечного синтаксического обхода анализируемого JSON, нарушенного поведением капитализации IDE?

    извлечение данных из xls с использованием xlrd в python

    Использование VLOOKUP lookup_value, которое содержит формулу

    Почему мой офисный объект Excel оставил процессы EXCEL.exe?

    Отсутствие данных при импорте файла Excel в DataGridView

    VBA Создайте массив с числами 1 через некоторое вычисленное значение

    Чтение полтора миллиона записей из книги Excel в проекте VSTO

    Экспорт таблицы HTML в Excel, созданный файл, но закодированный HTML внутри листа Excel

    Excel Macro Userform – отдельный код, обрабатывающий несколько флажков

    Как вставить только результаты расчета формулы R1C1 без вставки формул

    Передача параметров на python из VBA

    Удалить начальную часть строки из данных столбца

    Давайте будем гением компьютера.