Подскажите пожалуйста, нигде не нашел внятного ответа.
При записи макроса прогрессии по дате времени типа 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 соответственно, макрос работает корректно.
Разное - [решено] Прогрессия в Exel параметры
-
Iska
Re: Разное - [решено] Прогрессия в Exel параметры
Цитата old_gray:
Не могу выяснить смысл значений параметров Step и Stop, как они рассчитываются, т.к. хочу заменить их переменными. При записи макроса задавались 0:30 и 04.10.2016 23:30 соответственно, макрос работает корректно.
Дело в том, что внутренним представлением даты в Excel является вещественное число, где целая часть представляет собой значение дней от 1 января 1900 года, а дробная — число долей секунд в одном дне:
Скрытый текст
[spoiler][/spoiler]
То есть, 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 идёт на определённые ухищрения для учёта этого факта).
Таким образом, Вы можете использовать в переменных обычное вещественное число, например, период в четыре часа пять минут и шесть секунд будет выглядеть как:
Код:
Также Вы можете использовать функции (что более надёжно):
Код:
Или строкой:
Код:
Не могу выяснить смысл значений параметров Step и Stop, как они рассчитываются, т.к. хочу заменить их переменными. При записи макроса задавались 0:30 и 04.10.2016 23:30 соответственно, макрос работает корректно.
Разное - [решено] Прогрессия в Exel параметры
Дело в том, что внутренним представлением даты в Excel является вещественное число, где целая часть представляет собой значение дней от 1 января 1900 года, а дробная — число долей секунд в одном дне:
Скрытый текст
[spoiler][/spoiler]
То есть, 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#))
0.170208333333333
? CDbl(DateValue(#10/1/2016#))
42644Или строкой:
Код:
Код: Выделить всё
? CDbl(TimeValue("4:05:06"))
0.170208333333333
? CDbl(DateValue("1.10.2016"))
42644-
okshef
Re: Разное - [решено] Прогрессия в Exel параметры
Цитата old_gray:
Не могу выяснить смысл значений параметров Step и Stop
Не могу выяснить смысл значений параметров Step и Stop
Разное - [решено] Прогрессия в Exel параметры
Методы объекта Range, использующие команды Excel. Метод DataSeries
-
old_gray
Re: Разное - [решено] Прогрессия в Exel параметры
Спасибо.
"Методы объекта Range, использующие команды Excel. Метод DataSeries" - там я был, но про
Цитата Iska:
Дело в том, что внутренним представлением даты в Excel является вещественное число
ничего вроде бы нет.
"Методы объекта Range, использующие команды Excel. Метод DataSeries" - там я был, но про
Цитата Iska:
Дело в том, что внутренним представлением даты в Excel является вещественное число
Разное - [решено] Прогрессия в Exel параметры
ничего вроде бы нет.
-
Iska
Re: Разное - [решено] Прогрессия в Exel параметры
old_gray, вот здесь:
How to use dates and times in Excel
об этом есть.-
Iska