Этот вопрос основан на наблюдениях AdamV в его ответе на вопросе Как мне ввести название дня в ячейку в Excel?
Когда A1 имеет значение 2009-08-01, тогда:
=WEEKDAY(A1)
получит7
=TEXT(7, "dddd")
получитSaturday
=TEXT(7,"dddd, yyyy-mm-dd")
получитSaturday, 1900-01-07
=TEXT(1,"dddd, yyyy-mm-dd")
получитSunday, 1900-01-01
=TEXT("1900-01-01","dddd, yyyy-mm-dd")
также получитSunday, 1900-01-01
Последние два неверны: 1 января 1900 года фактически понедельник.
Различные источники подтверждают, что:
- Январь 1900 года - Википедия, свободная энциклопедия.
- Календарь 1900 года - Нидерланды.
- Календарь 1900 года - США.
Чего мне не хватает? Почему Excel делает это неправильно?
microsoft-excel
date
Йерун Вирт Плюмерс
источник
источник
Ответы:
Как описано в Microsoft KB 214058 :
«Другие программы для работы с электронными таблицами» относятся к Lotus 1-2-3 , который был довольно популярен в то время и неправильно предполагал, что 1900 год был високосным. Это объясняется еще более подробно в КБ 214326 :
источник
Вот причина, объясняемая самим Джоэлом: мой первый обзор BillG
источник
Одним из решений этой проблемы является добавление 400 лет к году, чтобы определить рабочий день, как показано в следующей формуле = WEEKDAY (DATE (A4 + 400, B4, C4), 1), поэтому, если A4 = 1834, B4 = 12, C4 = 14. это вернуло бы 1 (воскресенье), что соответствует 14 декабря 2234 года. Это прекращает работать для дат до 1753 года, следующего за изменением григорианского календаря.
источник