Почему в excel дата 1900

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Еще…Меньше

Excel поддерживает две системы дат: систему дат 1900 и систему дат 1904. В каждой системе дат используется уникальная начальная дата, с которой вычисляются все остальные даты книги. Все версии Excel для Windows вычисляют даты на основе системы дат 1900. Excel 2008 для Mac и более ранних Excel для Mac вычисляют даты на основе системы дат 1904. Excel 2016 для Mac и Excel для Mac 2011 используют систему дат 1900, которая гарантирует совместимость с Excel для Windows.

При копировании дат из книги, созданной в более ранней версии, в книгу, созданную в Excel 2016 или 2011 для Mac, они будут преобразовываться автоматически, если в параметрах > > Параметры даты не будет отключен параметр «Автоматически преобразовывать систему дат». Если этот параметр отключен, вы получите сообщение с вопросом, следует ли преобразовывать даты при вклеии. У вас есть два варианта действий. Вы можете преобразовать даты, чтобы использовать систему дат 1900 (рекомендуется). Этот параметр делает даты совместимыми с другими датами в книге. Вы также можете сохранить систему дат 1904 только для вклеиных дат.

Примечание: Даты, скопированные в составе диаграммы, нельзя преобразовать из системы дат 1904 г. и могут различаться примерно на четыре года. Эти даты необходимо преобразовать вручную.

Система дат 1900

В системе дат 1900 даты вычисляются с использованием 1 января 1900 г. в качестве отправной точки. При вводе даты она преобразуется в порядковый номер, который представляет количество дней, за которое прошло с 1 января 1900 г. Например, если ввести 5 июля 2011 г., Excel преобразует дату в число 40729. Это стандартная система дат в Excel для Windows, Excel 2016 для Mac и Excel для Mac 2011. Если вы решите преобразовать вкопированные данные, Excel скорректирует значения, а вкопированные даты будут соответствовать скопированные даты.

Система дат 1904 г.

В системе дат 1904 даты вычисляются с использованием 1 января 1904 г. в качестве отправной точки. При вводе даты она преобразуется в порядковый номер, который представляет количество дней, за которое прошло с 1 января 1904 г. Например, если ввести 5 июля 2011 г., Excel преобразует дату в число 39267. Это стандартная система дат в более ранних версиях Excel для Mac. Если вы решили не преобразовывать данные и сохранить систему дат 1904 г., то вкопированные даты будут отличаться от дат, которые вы скопировали.

Разница между системами дат

Так как в двух системах дат используются разные начальные дни, в каждой системе дат одинаковые даты представлены разными серийными номерами. Например, 5 июля 2011 г. может иметь две разные серийные номера:

Система дат

Серийный номер

1900

40729

1904

39267

Разница между двумя системами дат составляет 1462 дня. Это означает, что порядковый номер даты в системе дат 1900 всегда на 1462 дня больше, чем в системе дат 1904. 1462 дня — это четыре года и один день (включая один високосный день).

Изменение системы дат по умолчанию

  1. Выберите Файл > Параметры.

    (В Excel 2007 нажмите кнопку Microsoft Office кнопку Нажмите кнопку Microsoft Officeи выберите Excel параметры.)

  2. Выберите пункт Дополнительно.

  3. В области При вычислении этой книгивыберите или clear Use 1904 date system.

  1. В меню Excel выберите пункт Параметры.

  2. В списке Формулы и спискивыберите вычисление Кнопка параметров вычисления.

  3. Выберите или сберем его, чтобы использовать систему дат 1904.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

ДАТА

Функции даты & времени

Нужна дополнительная помощь?

Исправление чисел, превратившихся в даты

При импорте в Excel данных из внешних программ, иногда возникает весьма неприятная проблема — дробные числа превращаются в даты:

Испорченные данные

Так обычно происходит, если региональные настройки внешней программы не совпадают с региональными настройками Windows и Excel. Например, вы загружаете данные с американского сайта или европейской учётной системы (где между целой и дробной частью — точка), а в Excel у вас российские настройки (где между целой и дробной частью — запятая, а точка используется как разделитель в дате).

При импорте Excel, как положено, пытается распознать тип входных данных и следует простой логике — если что-то содержит точку (т.е. российский разделитель дат) и похоже на дату — оно будет конвертировано в дату. Всё, что на дату не похоже — останется текстом.

Давайте рассмотрим все возможные сценарии на примере испорченных данных на картинке выше:

  • В ячейке A1 исходное число 153.4182 осталось текстом, т.к. на дату совсем не похоже (не бывает 153-го месяца)
  • В ячейке A2 число 5.1067 тоже осталось текстом, т.к. в Excel не может быть даты мая 1067 года — самая ранняя дата, с которой может работать Excel — 1 января 1900 г.
  • А вот в ячейке А3 изначально было число 5.1987, которое на дату как раз очень похоже, поэтому Excel превратил его в 1 мая 1987, услужливо добавив единичку в качестве дня:

    Неправильная дата

  • То же самое случилось и в ячейке А4, где изначально было число 12.6923. Причем 6923-й год Excel тут нисколько не смутил — для него главное, чтобы дата была не раньше 1900 года. Так что добро пожаловать в далекое будущее:

    Еще одна неправильная дата

  • Единственное, что распознаётся корректно — это числа без дробной части (число 1000 в ячейке А6). И на том спасибо :)

Вот такие варианты. И если текстовые числа ещё можно вылечить банальной заменой точки на запятую, то с числами превратившимися в даты такой номер уже не пройдет. А попытка поменять их формат на числовой выведет нам уже не исходные значения, а внутренние коды дат Excel — количество дней от 01.01.1900 до текущей даты:

Неправильное число после изменения формата

Лечится вся эта история тремя принципиально разными способами.

Способ 1. Заранее в настройках

Если данные ещё не загружены, то можно заранее установить точку в качестве разделителя целой и дробной части через Файл — Параметры — Дополнительно (File — Options — Advanced):

Настройка разделителей в окне параметров Excel

Снимаем флажок Использовать системные разделители (Use system separators) и вводим точку в поле Разделитель целой и дробной части (Decimal separator).

После этого можно смело импортировать данные — проблем не будет.

Способ 2. Формулой

Если данные уже загружены, то для получения исходных чисел из поврежденной дата-тексто-числовой каши можно использовать простую формулу:

Формула исправления чисел из дат

=—ЕСЛИ(ЯЧЕЙКА(«формат»;A1)=»G»; ПОДСТАВИТЬ(A1;».»;»,»); ТЕКСТ(A1;»М,ГГГГ»))

В английской версии это будет:

=—IF(CELL(«format«;A1)=»G»; SUBSTITUTE(A1;».»;»,»); TEXT(A1;»M,YYYY«))

Логика здесь простая:

  • Функция ЯЧЕЙКА (CELL) определяет числовой формат исходной ячейки и выдаёт в качестве результата «G» для текста/чисел или «D3» для дат.
  • Если в исходной ячейке текст, то выполняем замену точки на запятую с помощью функции ПОДСТАВИТЬ (SUBSTITUTE).
  • Если в исходной ячейке дата, то выводим её в формате «номер месяца — запятая — номер года» с помощью функции ТЕКСТ (TEXT).
  • Чтобы преобразовать получившееся текстовое значение в полноценное число — выполняем бессмысленную математическую операцию — добавляем два знака минус перед формулой, имитируя двойное умножение на -1.

Способ 3. Макросом

Если подобную процедуру лечения испорченных чисел приходится выполнять часто, то имеет смысл автоматизировать процесс макросом. Для этого жмём сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), вставляем в нашу книгу новый пустой модуль через меню Insert — Module и копируем туда такой код:

Sub Fix_Numbers_From_Dates()
    Dim num As Double, cell As Range

    For Each cell In Selection
        If Not IsEmpty(cell) Then
            If cell.NumberFormat = "General" Then
                num = CDbl(Replace(cell, ".", ","))
            Else
                num = CDbl(Format(cell, "m,yyyy"))
            End If
            cell.Clear
            cell.Value = num
        End If
    Next cell
End Sub

Останется выделить проблемные ячейки и запустить созданный макрос сочетанием клавиш Alt+F8 или через команду Макросы на вкладке Разработчик (Developer — Macros). Все испорченные числа будут немедленно исправлены.

Ссылки по теме

  • Как Excel на самом деле работает с датами и временем
  • Замена текста функцией ПОДСТАВИТЬ
  • Функция ВПР и числа-как-текст

This question is based on the observations of AdamV in his answer on How do I get the day name into a cell in Excel?

When A1 has the value 2009-08-01, then:

  • =WEEKDAY(A1) will obtain 7
  • =TEXT(7, "dddd") will obtain Saturday
  • =TEXT(7,"dddd, yyyy-mm-dd") will obtain Saturday, 1900-01-07
  • =TEXT(1,"dddd, yyyy-mm-dd") will obtain Sunday, 1900-01-01
  • =TEXT("1900-01-01","dddd, yyyy-mm-dd") will also obtain Sunday, 1900-01-01

The last two are wrong: the 1st of January 1900 is actually a Monday.
Various sources seem to confirm that:

  • January 1900 — Wikipedia, the free encyclopedia.
  • Year 1900 Calendar – The Netherlands.
  • Year 1900 Calendar – United States.

What am I missing? Why is Excel doing this wrong?

Community's user avatar

asked Sep 30, 2012 at 14:43

Jeroen Wiert Pluimers's user avatar

1

As described in Microsoft KB 214058:

Days of the week before March 1, 1900 are incorrect in Excel

MORE INFORMATION

When the date system in Microsoft Excel was originally created, it was designed to be fully compatible with date systems used by other spreadsheet programs.

However, in this date system, the year 1900 is incorrectly interpreted as a leap year. Because there is no February 29 («leap day») in the year 1900, the day of the week for any date before March 1, 1900 (the day after the «leap day»), is not computed correctly.

The «other spreadsheet programs» refer to Lotus 1-2-3, which was quite popular back then, and incorrectly assumed that year 1900 was a leap year. This is explained in even more detail in KB 214326:

Excel 2000 incorrectly assumes that the year 1900 is a leap year

MORE INFORMATION

When Lotus 1-2-3 was first released, the program assumed that the year 1900 was a leap year, even though it actually was not a leap year. This made it easier for the program to handle leap years and caused no harm to almost all date calculations in Lotus 1-2-3.

When Microsoft Multiplan and Microsoft Excel were released, they also assumed that 1900 was a leap year. This assumption allowed Microsoft Multiplan and Microsoft Excel to use the same serial date system used by Lotus 1-2-3 and provide greater compatibility with Lotus 1-2-3. Treating 1900 as a leap year also made it easier for users to move worksheets from one program to the other.

Although it is technically possible to correct this behavior so that current versions of Microsoft Excel do not assume that 1900 is a leap year, the disadvantages of doing so outweigh the advantages.

If this behavior were to be corrected, many problems would arise, including the following:

  • Almost all dates in current Microsoft Excel worksheets and other documents would be decreased by one day. Correcting this shift would take considerable time and effort, especially in formulas that use dates.
  • Some functions, such as the WEEKDAY function, would return different values; this might cause formulas in worksheets to work incorrectly.
  • Correcting this behavior would break serial date compatibility between Microsoft Excel and other programs that use dates.

If the behavior remains uncorrected, only one problem occurs:

  • The WEEKDAY function returns incorrect values for dates before March 1, 1900. Because most users do not use dates before March 1, 1900, this problem is rare.

Community's user avatar

answered Sep 30, 2012 at 14:50

user1686's user avatar

4

Here is the reason explained by Joel himself: My First BillG Review

Basic uses December 31, 1899 as the epoch instead of January 1, 1900,
but for some reason, today’s date was the same in Excel as it was in
Basic.

Huh?

I went to find an Excel developer who was old enough to remember why.
Ed Fries seemed to know the answer.

«Oh,» he told me. «Check out February 28th, 1900.»

«It’s 59,» I said.

«Now try March 1st.»

«It’s 61!»

«What happened to 60?» Ed asked.

«February 29th. 1900 was a leap year! It’s divisible by 4!»

«Good guess, but no cigar,» Ed said, and left me wondering for a
while.

Oops. I did some research. Years that are divisible by 100 are not
leap years, unless they’re also divisible by 400.

1900 wasn’t a leap year.

«It’s a bug in Excel!» I exclaimed.

«Well, not really,» said Ed. «We had to do it that way because we need
to be able to import Lotus 123 worksheets.»

«So, it’s a bug in Lotus 123?»

«Yeah, but probably an intentional one. Lotus had to fit in 640K.
That’s not a lot of memory. If you ignore 1900, you can figure out if
a given year is a leap year just by looking to see if the rightmost
two bits are zero. That’s really fast and easy. The Lotus guys
probably figured it didn’t matter to be wrong for those two months way
in the past.

answered Oct 1, 2012 at 18:13

Giorgi's user avatar

GiorgiGiorgi

6312 gold badges7 silver badges18 bronze badges

1

One solution to this is to add 400 years to the year, to work out the weekday as in the following formula:

=WEEKDAY(DATE(A4+400,B4,C4),1)

So the following variables

A4 = 1834
B4 = 12
C4 = 14

would return 1 (Sunday), which is the same as for 14 December 2234.
This stops working for dates before 1753, the year after the change to the Gregorian calendar.

Rafael Tavares's user avatar

answered Dec 14, 2018 at 19:46

Adrian's user avatar

0

35 / 30 / 7

Регистрация: 24.07.2015

Сообщений: 179

1

13.08.2017, 12:04. Показов 5267. Ответов 8


Студворк — интернет-сервис помощи студентам

Здравствуйте, не получается настроить формулу так как надо, данные берутся из листа «отстой» и подставляются в «Иланская», если в столбце есть данные то работает, а если нет то показывает 01.01.1900 как от этого избавится не пойму, использую функции ЕСЛИОШИБКА совместно с ВПР, если есть другой вариант подскажите пожалуйста, внутри таблица там я комментарий к ячейкам оставил как мне надо, спасибо заранее



0



1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

13.08.2017, 13:08

2

der alex, попробуйте так

Код

=ЕСЛИ(ВПР(C135;отстой!A:F;6;0)=0;"";ВПР(C135;отстой!A:F;6;0))



0



35 / 30 / 7

Регистрация: 24.07.2015

Сообщений: 179

13.08.2017, 17:41

 [ТС]

3

теперь в пустых ячейках появляется #Н/Д, я поставил формулу в ячейку J135 теперь если нет данных по вагону то пусто, а вот если вагона вообще нет то #Н/Д



0



1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

13.08.2017, 17:46

4

Лучший ответ Сообщение было отмечено der alex как решение

Решение

Может так?

Код

=ЕСЛИОШИБКА(ЕСЛИ(ВПР(C135;отстой!A:F;6;0)=0;"";ВПР(C135;отстой!A:F;6;0));"")



0



35 / 30 / 7

Регистрация: 24.07.2015

Сообщений: 179

13.08.2017, 18:04

 [ТС]

5

теперь работает а как в столбце «K» настроить вывод из отстоя, я не пойму, такой же формулой не получается

Добавлено через 5 минут
решил ))

Код

=ЕСЛИОШИБКА(ЕСЛИ(ВПР(C135;отстой!A:G;7;0)=0;"";ВПР(C135;отстой!A:G;7;0));"")



0



1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

13.08.2017, 18:05

6

Всё правильно



1



35 / 30 / 7

Регистрация: 24.07.2015

Сообщений: 179

13.08.2017, 18:05

 [ТС]

7

OLEGOFF спасибо за наводку!



0



772 / 615 / 294

Регистрация: 05.01.2014

Сообщений: 1,338

13.08.2017, 18:12

8

Кнопка «Office», <Параметры Excel>, <Дополнительно>, <Показывать нули в ячейках, которые содержат нулевые значения>, снимаем галку.



0



35 / 30 / 7

Регистрация: 24.07.2015

Сообщений: 179

13.08.2017, 18:18

 [ТС]

9

взял на заметку и так уже решилось))



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

13.08.2017, 18:18

Помогаю со студенческими работами здесь

Найти и напечатать число, которое встречается в каждом столбце. Если числа нет — напечатать сообщение
Дан двумерный массив, найти и напечатать число, которое встречается в каждом столбце. Если числа…

Как сделать что если нет данных в таблице, чтобы шаблон этой самой таблице не выводился а писалось что данных в таблице нет
В общем проблема такая, есть админка где выводится список жалоб которые без ответа, когда они есть…

Объединение ячеек без потери данных, если объединены ячейки в столбце рядом
Здравствуйте!
Есть таблица из двух столбцов, в столбце &quot;А&quot; часть ячеек объединена, нужно…

Добавление данных в таблицу из полей формы access, если таких данных в таблице нет
Может быть я всех достал уже. Но к сожалению я еще только учусь, и иногда возникают проблемы. …

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

9

основные использует 31 декабря 1899 года, как эпоху, а не 1 января 1900 года,
но по какой-то причине, сегодня’s дата была такой же в Excel, как это было в
основные.

да?

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

«О,» он сказал мне. на «выезд 28-го февраля 1900 года.&и»

«Это’ы 59,» Я сказал.

«и сейчас попробовать 1 марта.&и»

«Это’ы 61!&и»

«Что случилось с 60?&я спросил Эд.

«по 29 февраля. 1900 был високосным! Это’s не делится на 4!&и»

«Какая хорошая догадка, но нет сигары, и» Эд сказал, и оставил меня интересно
В то время.

Упс. Я сделал некоторые исследования. Годы, делящиеся на 100, не
> в високосные годы, если они не’re также делится на 400.

В 1900 была’т високосный год.

«Это’ы ошибка в Excel!» я воскликнул.

и»Ну, не совсем,» сказал Эд. «Мы должны делать это таким образом, потому что нам нужно
, Чтобы быть в состоянии импортировать лотоса 123 листах.&и»

«так, это’ы ошибка в Lotus 123?&и»

«Да, но, вероятно, намеренным один. Лотос должен был поместиться в 640К.
что’s не много памяти. Если вы игнорируете 1900, вы можете выяснить, если
В данный год является високосным, просто глядя, чтобы увидеть, если правый
два бита равны нулю. Что’s действительно быстро и легко. Лотос ребята
наверное, понял, что ничего’т имеет значения, считалось, что эти два месяца пути
В прошлом.

Понравилась статья? Поделить с друзьями:
  • Почему в excel выходит знач
  • Почему в excel выделяются сразу несколько ячеек
  • Почему в excel всего один лист
  • Почему в excel вместо числа появляется формула
  • Почему в excel вместо числа появляется решетка