Извлечение десятичной дроби из времени

#excel #vba #variables #time

#excel #vba #переменные #время

Вопрос:

У меня есть дата и время в одной ячейке, и мне нужно извлечь десятичную дробь, которую Excel использует для времени, чтобы я мог вычесть из нее время.

Ячейка имеет это значение: 01.09.2020 7:01:21 Мне нужно получить время 7:01:21, а затем мне нужно извлечь десятичную дробь, которая ее представляет, то есть: 0,292604166666667 и сохранить ее в переменной в vba

Я много искал в Интернете, но все хотят сделать с точностью до наоборот, и я совершенно невежественен.

Спасибо за вашу помощь

Ответ №1:

Хорошо, я разобрался с этим.

Я не совсем доволен решением, но оно работает. Я уверен, что некоторые из вас, ребята, могут придумать более элегантное решение без использования переменной.

Мое это:

 Dim NumericTime as Double
NumericTime = TimeValue("A1")
Debug.Print NumericTime
  

Комментарии:

1. Будьте довольны этим. Это решение.

2. Функция CDbl для преобразования в double, чтобы избежать промежуточной переменной.

Ответ №2:

С данными в A1, в C1 введите:

 =TIMEVALUE(MID(A1,FIND(" ",A1) 1,99))
  

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

Ответ №3:

Чтобы извлечь десятичную дробь, просто:

 =MOD(A1,1)
  

Обязательно форматируйте результаты как General или как Number с соответствующим количеством знаков после запятой

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

В VBA Mod функция не работает с десятичными числами, поэтому эквивалентом может быть:

 Function DecimalTime(tm As Date) As Double
    DecimalTime = tm - Int(tm)
End Function