![]() |
Прогрессия в Exel параметры
Подскажите пожалуйста, нигде не нашел внятного ответа.
При записи макроса прогрессии по дате времени типа dd.mm.yyyy h:mm с шагом 0:30 предельным значением (к примеру) 04.10.2016 23:30 получаю следующее: Sub Макрос1() ' Макрос1 Макрос Range("A9").Select ActiveCell.FormulaR1C1 = "10/1/2016 0:00" Range("A9").Select Selection.DataSeries Rowcol:=xlColumns, Type:=xlChronological, Step:=2.08333333333333E-02, Stop:=42647.9791666667, Trend:=False End Sub Не могу выяснить смысл значений параметров Step и Stop, как они рассчитываются, т.к. хочу заменить их переменными. При записи макроса задавались 0:30 и 04.10.2016 23:30 соответственно, макрос работает корректно. |
Цитата:
Скрытый текст
![]() То есть, 1 ноября 2016 года — это 1 января 1900 года + 42644 дня. А 30 минут — это 2.08333333333333E-02 == 0.0208(3) = 30 минут * 60 секунд в 1 минуте, где 1 секунда, являющаяся 1/(60 секунд в 1 минуте * 60 минут в 1 часе * 24 часа в 1 дне) долей одного дня, равна 1.15740740740741E-05 == 0.00001157(407). Числа в периоде получаются из-за того, что точно представить такую долю в виде десятичной дроби не представляется возможным (и Excel идёт на определённые ухищрения для учёта этого факта). Таким образом, Вы можете использовать в переменных обычное вещественное число, например, период в четыре часа пять минут и шесть секунд будет выглядеть как: Код:
4 * (1.15740740740741E-05 * 60 * 60) + 5 * (1.15740740740741E-05 * 60) + 6 * 1.15740740740741E-05 = 0.170208(3) Код:
? CDbl(TimeValue(#4:05:06#)) Код:
? CDbl(TimeValue("4:05:06")) |
Цитата:
|
Спасибо.
"Методы объекта Range, использующие команды Excel. Метод DataSeries" - там я был, но про Цитата:
|
old_gray, вот здесь: How to use dates and times in Excel об этом есть.
|
Еще раз благодарю, разобрался.
|
Время: 22:30. |
Время: 22:30.
© OSzone.net 2001-