Всем доброго времени суток! Кто-нибудь понимает, почему формула =ГОД(СЕГОДНЯ()-A2)-1900 работает корректно? (в ячейке A2 - дата) Эта формула позволяет вычислить число полных лет, которые прошли с указанной даты по сегодняшний день. Вопрос: каким образом получается так, что эта формула всегда дает корректный результат? (файл с небольшим примером прилагаю)
sokol92 написал: например, 14.05.2000 результат сегодня неверен
Ну почему же неверен? Смотря с какой стороны смотреть.. Это, как бы, вопрос интерпретации... Ведь неверным будет утверждение сделанное 14 мая 2010 года относительно человека родившегося в этот день (14 мая 2000) что он уже прожил 1 день...
Konstantin Zhi написал: всегда дает корректный результат?
как уже отметил sokol92, -не всегда и происходит это из за смещения и високосных лет. одного дня может не хватить а он нам так нужен :-) A так, 1900 год принят за ноль или если пос тавить 0 и отформатироать как дату , то получим 00.01.1900 Разница между двумя датами это число дней, и их переводим в полные года и вот тут можно попасть на отсутствие одного висакосного дня. Так как не может быть 0063го года, то система выдает нам 1963, от него отнимаем наши 1900. вроде все,
СЕГОДНЯ() в числовом формате = 43234,00 Дата в А2 в числовом формате = 19906,00 Разница = 23328,00 => переводим в дату = 13.11.1963 => извлекаем год = 1963, отнимаем 1900
vikttur написал: =ГОД(23328)-1900 или =ГОД(13.11.1963)-1900
абсолютно верно Вы все расписали, но! но при чем тут 1 июля и 13 ноября? совершенно же разные даты - нет никакой связи, или тут, как бы получается так, что не критично, что там за дата будет? хотя как же не критично? почему там получается именно дата того года, сколько на данный момент прожил человек с указанной датой рождения?
согласен, в этом случае - ошибка, спасибо большое, что показали мне дату, для которой эта формула ошибочно считает. Однако, все-же, очень удивительно, что каким-то (для меня, не для тех, кто понял суть формулы) невероятным образом в 99,8% случаях формула правильно работает. Как ни крути, но я не понимаю зачем функции ГОД() "скармливать" какую-то "дату" которая получается как разница между датой рождения и сегодняшней датой и при это полученная в результате этого вычитания дата никак не связана с первоначальной...
И все же, интересно как решалась эта задача на заре становления Excel когда функции РАЗНДАТ не было (как известно, она почему то упорно не включается разработчиками во встроенную помощь). Скорее всего, формула (чтобы она корректно считала во всех случаях) была очень и очень непростая.