Поле(поля) содержит ЧИСЛО(А) необходимо в новой колонке получить в стандартном виде ДАТУ. При том, что ЧИСЛО - это КОЛИЧЕСВТО по 100 наносекунд прошедших с 1.1.1601
(немного попереводя единицы: 1 минута 600000000 РАЗ по 100 наносекунд 1 час 36000000000 РАЗ по 100 наносекунд 1 сутки 864000000000 РАЗ по 100 наносекунд)
Поле(поля) содержит ЧИСЛО(А) необходимо в новой колонке получить в стандартном виде ДАТУ. При том, что ЧИСЛО - это КОЛИЧЕСВТО по 100 наносекунд прошедших с 1.1.1601
(немного попереводя единицы: 1 минута 600000000 РАЗ по 100 наносекунд 1 час 36000000000 РАЗ по 100 наносекунд 1 сутки 864000000000 РАЗ по 100 наносекунд)ALARMus
Немного не то получилось. У меня есть проверочные данные 130118256000000000 это 1.5.2013 130171824000000000 это 2.7.2013 Но от 1.1.1601 - ну это не суть должно просто отличаться на 299 лет.
но при этом использовал Вашу формулу и получил для обеих строк 16.09.1989 (хотя вроде даты разные должны быть)
Quote (Serge_007)
=ДАТА(1900;1;1+(A1/864000000000))
Немного не то получилось. У меня есть проверочные данные 130118256000000000 это 1.5.2013 130171824000000000 это 2.7.2013 Но от 1.1.1601 - ну это не суть должно просто отличаться на 299 лет.
но при этом использовал Вашу формулу и получил для обеих строк 16.09.1989 (хотя вроде даты разные должны быть)ALARMus
Я думаю превышены возможности Экселя. Если нолик удалить - уже получаются нормальные даты 25.03.1941 01.04.1941 имхо нужно входящие данные сперва (вне Экселя) разделить на 1000, затем из полученного уже делать даты.
Я думаю превышены возможности Экселя. Если нолик удалить - уже получаются нормальные даты 25.03.1941 01.04.1941 имхо нужно входящие данные сперва (вне Экселя) разделить на 1000, затем из полученного уже делать даты.Hugo
DateХранение даты и времени Даты от 1.01.100 до 31.12.9999 Время от 00:00:00 до 23:59:59
Date — VBA использует тип Date для хранения дат и времени. При работе с этим типом данных следует иметь ввиду, что VBA-типы Date не являются такими же типами, как в рабочих листах Excel, хотя во многом и схожи с ними. Например, базовой датой для VBA-типа Date является 30 декабря 1899 года, а в Excel — 1 января 1900 года. VBA-тип Date является типом последовательных дат.
VBA использует отрицательные числа для представления дат ранее базовой даты (30 декабря 1899), и положительные — для дат после базовой. Число 0 представляет саму дату 30.12.1899.
В значении последовательной даты целая часть — это общее число дней от базовой даты. Дробная часть (цифра справа от десятичного знака) — эти цифры обозначают время дня как часть дня. Один час — это 1/24 дня, одна минута — 1/1440 дня, секунда — 1/86400 дня.
Можно вычитать одну дату из другой, добавлять к дате или вычитать числа для изменения ее значения. В VBA имеется несколько встроенных процедур для отдельного извлечения года, месяца, дня, часов, минут и секунд переменной типа Date.
Quote (Hugo)
...с какой там VBA считать начинает?
С 100-го года
DateХранение даты и времени Даты от 1.01.100 до 31.12.9999 Время от 00:00:00 до 23:59:59
Date — VBA использует тип Date для хранения дат и времени. При работе с этим типом данных следует иметь ввиду, что VBA-типы Date не являются такими же типами, как в рабочих листах Excel, хотя во многом и схожи с ними. Например, базовой датой для VBA-типа Date является 30 декабря 1899 года, а в Excel — 1 января 1900 года. VBA-тип Date является типом последовательных дат.
VBA использует отрицательные числа для представления дат ранее базовой даты (30 декабря 1899), и положительные — для дат после базовой. Число 0 представляет саму дату 30.12.1899.
В значении последовательной даты целая часть — это общее число дней от базовой даты. Дробная часть (цифра справа от десятичного знака) — эти цифры обозначают время дня как часть дня. Один час — это 1/24 дня, одна минута — 1/1440 дня, секунда — 1/86400 дня.
Можно вычитать одну дату из другой, добавлять к дате или вычитать числа для изменения ее значения. В VBA имеется несколько встроенных процедур для отдельного извлечения года, месяца, дня, часов, минут и секунд переменной типа Date.Serge_007
Почему не учитываем високосные годы, точнее не високосные. 1900, 2100, 2200, 2300 - не високосные, а 2000 - високосный
При этом в VBA и Excel 1900 год различен. в Excel есть 29.02.1900 а в VBA нет такой даты, после 28.02.1900 следует 01.03.1900 Таким образом в Excel значению "1" (начало счета) соответствует 01.01.1900 а в VBA "1" - это 31.12.1899. Проверить можно легко, напишите в окне Immediate: ?CDate(1)
с 01.03.1900 нумерация дат в Excel и VBA совпадают
Quote (Pelena)
Остаётся разница с тестом в три дня
Quote (Pelena)
Почему +1?
Почему не учитываем високосные годы, точнее не високосные. 1900, 2100, 2200, 2300 - не високосные, а 2000 - високосный
При этом в VBA и Excel 1900 год различен. в Excel есть 29.02.1900 а в VBA нет такой даты, после 28.02.1900 следует 01.03.1900 Таким образом в Excel значению "1" (начало счета) соответствует 01.01.1900 а в VBA "1" - это 31.12.1899. Проверить можно легко, напишите в окне Immediate: ?CDate(1)
с 01.03.1900 нумерация дат в Excel и VBA совпадаютMCH
Сообщение отредактировал MCH - Пятница, 16.11.2012, 13:27
Да, где-то я читал целый рассказ про этот косяк с 29.02.1900. В общем, Билл был в курсе Хотя я сейчас не помню - была такая дата или нет? Но мне это и не нужно... Но по логике событий - её небыло
Да, где-то я читал целый рассказ про этот косяк с 29.02.1900. В общем, Билл был в курсе Хотя я сейчас не помню - была такая дата или нет? Но мне это и не нужно... Но по логике событий - её небыло Hugo
VBA использует отрицательные числа для представления дат ранее базовой даты (30 декабря 1899), и положительные — для дат после базовой. Число 0 представляет саму дату 30.12.1899.
VBA использует отрицательные числа для представления дат ранее базовой даты (30 декабря 1899), и положительные — для дат после базовой. Число 0 представляет саму дату 30.12.1899.
Сергей, ты правишь свои посты без отметки об исправлении. Вначале ты написал, что точно не уверен с какой даты начинается отсчет, что возможно это надсройка Уокенбаха
Мне интересно было проверить, а в справке я этого не увидел. Методом подбора я подобрал число -657434 которому соответствует 01.01.100, даты для числа -657435 в VBA нет Кроме того, в твоем новом посте не указано минимальное число соответствующее 01.01.100
Quote (Serge_007)
Верно
Сергей, ты правишь свои посты без отметки об исправлении. Вначале ты написал, что точно не уверен с какой даты начинается отсчет, что возможно это надсройка Уокенбаха
Мне интересно было проверить, а в справке я этого не увидел. Методом подбора я подобрал число -657434 которому соответствует 01.01.100, даты для числа -657435 в VBA нет Кроме того, в твоем новом посте не указано минимальное число соответствующее 01.01.100MCH
Сообщение отредактировал MCH - Пятница, 16.11.2012, 13:46