Разные результаты в Excel и Libre для одного файла!?

Автор Hasim, 4 мая 2012, 11:40

0 Пользователи и 1 гость просматривают эту тему.

Hasim

Один и тот же файл в Excel и Libre показывает разные результаты! ???
Excel - правильно.
Libre - неправильно.

[вложение удалено Администратором]

JohnSUN

Да нет, всё верно. Просто формат отображения задан "в лоб".
Фокус в том, что при вычислении временных интервалов и Calc и Excel работают одинаково. А вот при арифметических действиях уже с интервалами, а не с первоначальными датами, мы наступаем на грабли, которые возникли из-за базовой даты 01/01/1900. В районе этих чисел набегает ошибка в один день, связанная с несуществующим 29 февраля 1900 года.
LiO честно вычислил число 15 и преобразовал его в дату ПО СВОИМ правилам, в 14.01.1900 00:00:00.
Excel тоже совершенно честно получает число 15, но ПО СВОИМ (ошибочным) правилам преобразует их в дату 15.01.1900 00:00.
Ошибка в формуле отсутствует, и там и там результат 15 дней. А вот отображение результата через строку форматирования "ДД\:чч:мм:сс" (или "DD\:HH:MM:SS" в LiO) приводит к "глюку" - каждый из офисов отображает НОМЕР ДНЯ, который считает правильным для этой даты.

Если уж так хочется получить результат в днях-часах-минутах, то лучше брать целую часть интервала в качестве количества дней, а дробную часть числа форматировать как время, обычным образом.
И кстати, не нужно отделять дни от часов двоеточием - это не стандартное отображение, которое легко собьет с толку непосвященного пользователя. Лучше использовать пробел или надпись "дн.", "сут." или что-то в этом роде
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ape

#2
Цитата: JohnSUN от  4 мая 2012, 12:54
?? -> В районе этих чисел набегает ошибка в один день, связанная с несуществующим 29 февраля 1900 года.
Не уверен. Считал, что ошибка зарыта в том, что кратный 4-м столетиям 2000 год - високосный по исключительному правилу. Т.е., это вопрос к Calc, а не к Exel.

Hasim

Я тоже не уверен. Ведь если ошибка и набегает в один день для каждой даты, то их разность ошибку компенсирует. Для Excel, возможно, так и получается. А для Libre разность ошибок не компенсируется. И вообще дни между датами в Libre вычисляются не так, как в Excel, а именно с ошибкой в один день и именно в Libre.
Хотя я только привел пример того, что правильный файл Excel может дать неправильные результаты в Libre.
И как при этом быть с совместимостью?
В данном простейшем случае переписывать функции с простой разности на сложные преобразования?

ape

Посмотрите, что получается при уменьшении 1-х дат на 100 лет: ещё один день "в ауте".

[вложение удалено Администратором]

ape

Похоже, что в Calc значение "21.02.2011 00:00:00" = "24 час. 00 мин. 00 сек.". Т.е. сутки начинаются с "00:00:00,000001с".

Yakov

Правила расчёта даты можно выбрать до начала заполнения документа (см. вложение)

[вложение удалено Администратором]

Hasim

Цитата: Yakov от  4 мая 2012, 16:00
Правила расчёта даты можно выбрать до начала заполнения документа (см. вложение)
Но совместимость с Excel нарушается ещё больше. Отличаются не только разности дат но и сами даты.

ape

Без комментариев.. (JhonSUN - ?)

[вложение удалено Администратором]

JohnSUN

Ну, что тут скажешь? Лучше один раз показать, чем много слов написать.

Первые два образца - LiO с разными базовыми датами. И там, и там - в феврале 28 дней.
Последний, в красной рамке - наш красавец, который "отказывается отвечать на вопрос"... В смысле, "это вопрос к Calc, а не к Exel."

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ape

Cпасибо, т.е Exel_XP(-?). Но Calc в 3-м случае поменял дату, добавив 4 года. -?

Hasim

По JohnSUN получается, что если даты выбраны до 29.02.1900, то ошибок быть не должно. Но это не так.
Ошибки есть и там.

[вложение удалено Администратором]

JohnSUN

#12
Разумеется. Мы ведь сместили "базовую дату" именно на 4 года.

Я уже писал - причины "глюка" не в неправильных вычислениях, а в формате отображения. Строка форматирования отображает буквально "день:часы:минуты:секунды" для интервала. Интервал - это количество дней и часов между двумя датами. Правильный формат для этой величины - число с дробной частью. Здесь же для первого этапа вычислений применен "кастрированный" формат - без месяца и года. И это сбивает с толку. Более того, для второго этапа вычислений, когда из временного интервала вычитается другой временной интервал, опять применяется форматирование как для даты. Смысл последней разности: на сколько один интервал длиннее другого. То есть число дней-часов-минут. Автор формулы применяет к результату формат даты. Компьютер преобразовывает число 15 в какую-то дату, отстоящую на 15 дней от базовой и отображает день этой даты.

Нет, Hasim, ошибок нет. Просто отображены разные числа, дни января месяца.

ЗЫ. Просто измените формат данных в колонках C и D на числовой
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Hasim

Цитата: JohnSUN от  4 мая 2012, 19:32Здесь же для первого этапа вычислений применен "кастрированный" формат - без месяца и года. И это сбивает с толку.
И это сбивает с толку Calc, но не Excel.
Я говорю об этом.

JohnSUN

То есть, ты считаешь, что твой пример построен абсолютно правильно? И будет хорошо работать для любых исходных данных? Даже если ввести в A4, например, значение "11.01.2012 03:49:08"?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне