Будьте осторожны с данными и форматированием данных на вашем листе.
В этом случае кажется, что поле отформатировано так, чтобы отображать часы и, когда оно отображает общую дату и часы, за конкретным числом стоит конкретное число. отображаемая информация.
Например:
Если ячейка отформатирована для отображения часов и отображает 08:00, за ней стоит число, которое будет что-то вроде " 8,333 "
, когда вы используете Range("A2").Value
, он возвращает" 8,333 ", а не 8, как вы думаете,
для конечного времени быть таким же
- 09: 00 утра будет представлен чем-то вроде «8 375».
Это то, что происходит в вашей программе.
Чтобы исправить это, вам нужно преобразовать полученное значение в соответствующий час.
попробуйте следующий метод преобразования:
sHour = Sheets("Statistics").Range("A2").Value
sConverted = (sHour - CInt(sHour)) * 24
eHour = Sheets("Statistics").Range("A2").Value
eConverted = (eHour - CInt(eHour)) * 24
, вам также нужно будет преобразовать часы в минуты в окончательной формуле
hitFreq = (eConverted - sConverted ) * 60 / targetMake
, которые должны решить вашу проблему * 1 034 *