Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа с MS Office > Ошибка Excel


Автор: zlato 9.3.2016, 19:19
Известно, что в Excel значения даты могут быть от 1.1.1900 до 31.12.9999.
Действительно, если ввести недопустимую дату 00.01.1900, то она будут воспринята как текст и будет выровнена в ячейке по левому краю.
Но я обнаружил, что если, например, в А1 ввести дату 13.01.1900, а в А2 формулу =А1-13, то будет получен результат 00.01.1900, причем это будет значением даты!
К полученному значению можно прибавлять числа и получать новые даты. Можно применять все функции для работы с датами. Например, функция ДЕНЬ вернет значение 0 (номер дня месяца!), функция ДЕНЬНЕД -- номер дня недели (соответствует субботе) и т.д. Чудеса! 

Автор: Akina 10.3.2016, 09:16
А ошибка-то в чём?
"Значения даты" - это термин форматирования значения при выводе, а вовсе даже не формата хранения. Формат хранения как был Single, так и остался.

Автор: zlato 10.3.2016, 20:53
Akina, спасибо.

А как назвать ситуацию, когда выводится недопустимое значение даты, которое можно использовать именно как дату?
В то время, как другие недопустимые значения даты 31/12/1899 или 35/03/2016  или 29/02/2100 (тоже single) не распознаются как значения даты.
Почему, если для даты 31/12/1899  в случае числового формата выводится -1, но при этом 31/12/1899   датой не считается, значение 00/01/1900, имеющего  в числовом формате значение 0, датой может быть?
И наоборот, если ввести -1, а потом сделать в этой ячейке числовой формат, то будет ошибка, а если тоже сделать с нулем, то будет выведена дата 00/01/1900?

Мне кажется, что и для 0, и для -1 должно быть одно и то же, то есть "не дата".

Хотя, может быть, можно назвать обнаруженную мной ситуацию "некорректным значением даты".

Автор: Akina 10.3.2016, 23:55
Цитата(zlato @  10.3.2016,  21:53 Найти цитируемый пост)
другие недопустимые значения даты 31/12/1899 или 35/03/2016  или 29/02/2100 (тоже single) не распознаются как значения даты.

Так ведь и 00/01/1900 тоже не будет распознано как дата. Попробуй-ка ввести...

Цитата(zlato @  10.3.2016,  21:53 Найти цитируемый пост)
Мне кажется, что и для 0, и для -1 должно быть одно и то же, то есть "не дата".

Да, должно быть так. Но вот уж точно косяк ни разу не критичный...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)