Excel помилково вважає 1900 рік високосним, і це ніколи не виправлять
8 квітня 2026Час читання: 6 хв

Секрет Excel: чому 1900 рік помилково вважається високосним і чому Microsoft ніколи це не виправить

Світ програмного забезпечення повний цікавих технічних курйозів, але деякі з них набувають статусу легендарних. Одна з таких давніх історій стосується найпопулярнішої у світі програми для роботи з електронними таблицями — Microsoft Excel. Якщо ви коли-небудь заглиблювалися в роботу з датами в Excel, ви могли натрапити на дивну аномалію: програма вважає, що 1900 рік був високосним. Це не випадковість і не сучасний баг — це свідома архітектурна рішення, прийняте десятиліття тому, наслідки якого Microsoft вже ніколи не виправить, бо це призведе до колапсу мільйонів таблиць, фінансових моделей і систем обліку по всьому світу. Ця стаття розкриє повну історію цієї дивної "особливості", пояснить її технічні корені та наслідки для сучасних користувачів.

Що таке високосний рік і де помилка Excel?

Перш ніж заглиблюватися в технічні деталі, важливо зрозуміти базові поняття. Високосний рік — це рік, тривалість якого становить 366 днів замість звичайних 365. Додатковий день — 29 лютого — з’являється майже кожні чотири роки. Це потрібно для того, щоб календарний рік синхронізувався з астрономічним (часом обертання Землі навколо Сонця). Правила визначення високосного року були встановлені григоріанським календарем, який ми використовуємо сьогодні:

  • Рік ділиться на 4 без остачі? — Це кандидат на високосний.
  • Однак, якщо рік ділиться на 100, він не є високосним (наприклад, 1800, 1900, 2100).
  • Виняток: якщо рік також ділиться на 400, тоді він високосний (наприклад, 1600, 2000, 2400).

Згідно з цими правилами, 1900 рік не є високосним, оскільки він ділиться на 100, але не ділиться на 400. Однак Microsoft Excel поводиться так, ніби 29 лютого 1900 року існувало. Ви можете ввести в комірку дату 29/02/1900, і Excel прийме її як коректну. Це фундаментальна помилка, вбудована в самі основи системи обчислення дат у програмі.

Як це проявляється на практиці?

Ця "особливість" може впливати на різні розрахунки:

  • Функції роботи з датами, такі як DAY(), MONTH(), WEEKNUM().
  • Розрахунок різниці між датами.
  • Перетворення дат у текстовому форматі. Для пересічного користувача, який працює з датами після 1900 року, це майже непомітно. Але для істориків, архівістів, фінансових аналітиків, які працюють з довгими часовими рядами, чи для програмістів, які автоматизують процеси, ця помилка може стати джерелом неточностей у дуже старих записах.

Історичне коріння помилки: спадкоємність від Lotus 1-2-3

Щоб зрозуміти, чому ця помилка виникла, потрібно повернутися в 1980-ті роки. На той момент домінуючою програмою для електронних таблиць на ринку ПК був не Excel, а Lotus 1-2-3 від компанії Lotus Development Corporation. Коли Microsoft розробляла першу версію Excel для Windows (яка вийшла у 1985 році), критично важливим завданням було забезпечити повну сумісність файлів з Lotus 1-2-3. Без цього жоден бізнес не став би мігрувати на новий софт.

Саме в Lotus 1-2-3 і була реалізована система дат, яка включала 29 лютого 1900 року. Причина була не в незнанні правил календаря, а в спрощенні алгоритмів. Розробники Lotus 1-2-3, ймовірно, свідомо прийняли це рішення, щоб полегшити обчислення різниці між датами, уникнувши складних умовних перевірок для винятку 1900 року. Це був типово інженерний компроміс між математичною точністю та обчислювальною ефективністю на комп'ютерах з обмеженою потужністю.

Бізнес-рішення Microsoft: сумісність за будь-яку ціну

Коли інженери Microsoft виявили цю аномалію в Lotus 1-2-3, вони стояли перед вибором:

  1. Виправити помилку і зробити правильну систему дат, ризикуючи втратити повну сумісність з файлами Lotus 1-2-3. Це означало б, що тисячі бізнес-таблиць після конвертації в Excel могли видавати неправильні результати в розрахунках з датами.
  2. Успадкувати помилку, зберігши абсолютну сумісність і забезпечивши плавний перехід користувачів.

Microsoft обрала другий шлях. Це рішення, прийняте на початку 1980-х, назавжди вписало "високосний" 1900 рік в ДНК Excel. На той момент воно було абсолютно раціональним з бізнес-точки зору: бездоганна робота з наявними даними користувача була важливішою за академічну точність у розрізі одного неіснуючого дня в минулому столітті.

Чому Microsoft ніколи не виправить цю помилку? Будинок з карт

Сьогодні, через понад 40 років, виправлення цієї помилки є технічно можливим, але практично катастрофічним. Ось чому:

1. Незворотні наслідки для сумісності. Мільярди файлів .xls і .xlsx, створених за десятиліття, розраховані на цю систему. Фінансові моделі, наукові дані, історичні архіви, промислові графіки — все це використовує константу, що 1900 рік має 366 днів. Зміна цієї логіки зламає всі старі розрахунки, що включають дати до 1 березня 1900 року. Перевірити і виправити кожен такий файл у світі неможливо.

2. Залежність сторонніх систем. Багато корпоративних систем, серверних скриптів, програм на Python, R чи C# побудовані навколо логіки парсингу дат Excel через бібліотеки (наприклад, Apache POI, OpenPyXL). Ці бібліотеки також реплікують цю поведінку для точної сумісності. Зміна в Excel вимагатиме каскадних оновлень у всій екосистемі.

3. Мінімальний практичний вплив. Для переважної більшості сучасних користувачів, які працюють з датами після, скажімо, 1970 або 2000 року, ця помилка ніколи не проявиться. Витрати на її виправлення для Microsoft (і світової економіки) абсолютно не співрозмірні з користю.

4. Технічний борг як фундамент. Ця ситуація — класичний приклад "технічного боргу" в софтверній інженерії. Це рішення, прийняте для швидкої вигоди (сумісність з Lotus 1-2-3) у минулому, яке згодом накричується шарами нового коду, і змінити його стає неймовірно дорого. Цей "борг" настільки глибоко вбудований, що його просто списали — прийняли як особливість, а не дефект.

Альтернативні системи дат у Excel

Цікаво, що Microsoft частково визнала проблему. Сучасні версії Excel пропонують дві альтернативні системи дат:

  • Система 1900 (система за замовчуванням): включає 29 лютого 1900 для сумісності з Lotus 1-2-3 і старими файлами Excel.
  • Система 1904 (система дат Mac): використовується за замовчуванням у старих версіях Excel для Mac. Вона починає відлік з 1 січня 1904 року і не містить помилки з високосним 1900-м. Її можна вручну увімкнути в параметрах Excel для Windows.

Однак перемикання на систему 1904 для існуючих файлів змістить всі дати на 1462 дня (4 роки + 1 день через помилку), що також призведе до плутанини.

Наслідки та вплив на сучасну розробку

Історія з високосним 1900 роком в Excel — це більше ніж забавний факт. Це наочний урок для розробників, архітекторів ПЗ та керівників про силу стандартів та сумісності.

Для розробників: Це нагадування, що рішення, прийняті для полегшення життя "сьогодні", можуть стати кісткою в горлі "завтра". Код живе десятиліттями. Це також показує важливість чіткої обробки крайових випадків (edge cases), особливо при роботі з датами — однією з найбільш складних областей у програмуванні.

Для користувачів та аналітиків: Це сигнал про те, наскільки критично важливо розуміти інструменти, якими ти користуєшся. Робота з історичними датами, особливо в період до 1900-1904 років, вимагає підвищеної уваги та, можливо, використання альтернативних систем або спеціалізованого програмного забезпечення для точних хронологічних розрахунків.

Для індустрії в цілому: Ця історія демонструє, як де-факто стандарт (навіть помилковий) може стати непохитним. Вона перегукується з іншими легендарними випадками технічного боргу, як, наприклад, проблеми з "проблемою 2000 року" (Y2K) або обмеження щодо 2038 року в 32-бітних системах Unix.

Висновок: невиправна "особливість" як частина цифрової історії

Отже, Microsoft Excel дійсно вважає 1900 рік високосним, і це не випадковість. Ця поведінка є прямим наслідком боротьби за ринок у 1980-х роках та рішення Microsoft успадкувати помилку від Lotus 1-2-3 заради безумовної сумісності. З тих пір світ побудував навколо цієї особливості гігантський "будинок з карт" — мільярди файлів, тисячі бізнес-процесів і цілі галузі програмного забезпечення.

Виправлення цієї, здавалося б, невеликої помилки сьогодні призвело б до лавиноподібного збою в обчисленнях по всьому світу, порушивши фінансову, наукову та історичну звітність. Тому Microsoft ніколи не виправить це. Ця дивна аномалія назавжди залишиться в програмі як пам'ятка про ранні дні комп'ютерної індустрії, коли сумісність часто була важливішою за досконалість, а технічний борг міг стати основою для глобального стандарту. Наступного разу, відкриваючи Excel, пам'ятайте: іноді найцікавіші історії приховані не в майбутніх функціях, а в тихих "особливостях" минулого.

Джерело: PC Gamer
Автор статті: Роман Попович

Рекламний блок

Схожі статті

Три найкращі мікростратегії за $10: що купити на Steam

Три найкращі мікростратегії за $10: що купити на Steam

13 липняРоман Попович
Warframe креативний директор: смерть Destiny 2 — трагедія через бізнес

Warframe креативний директор: смерть Destiny 2 — трагедія через бізнес

13 липняРоман Попович
SK hynix прогнозує кризу пам'яті до 2030 року, аналітики сумніваються

SK hynix прогнозує кризу пам'яті до 2030 року, аналітики сумніваються

13 липняРоман Попович
Студія Elder Scrolls Online скоротила штат до рівня 10-річної давнини після звільнень Xbox

Студія Elder Scrolls Online скоротила штат до рівня 10-річної давнини після звільнень Xbox

12 липняРоман Попович