Формат времени

Автор Zomgmeister, 5 февраля 2018, 15:33

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

Zomgmeister

Здравствуйте! Возникла пара вопросов на одну и ту же тему.

1. Каким образом назначить в документе LibreOffice Calc формат времени HH:MM вместо HH:MM:SS? При этом документ должен открываться на разных компьютерах с сохранением укороченного формата.

2. У меня есть несколько временных интервалов, вычисляемых арифметически — из времени конца события вычитается время начала события. Тут всё в порядке. Затем мне нужна сумма, и тут вроде бы тоже всё в порядке, выдаётся общая продолжительность в HH:MM:SS, ладно. А вот дальше мне нужно перевести всё в MM:SS, на самом деле просто в MM, то есть узнать, сколько минут ушло на все временные интервалы вместе взятые. Как это сделать?

В соответствии с рекомендацией прикладываю файл-образец.

Прошу прощения за беспокойство, если это где-то подробно описано и всё такое. Раньше почти не приходилось работать с Calc'ом.

JohnSUN

Ну, для начала нужно бы слегка подправить формулу в колонке D ("Время"). Третья строка, хоть и отображает "час-сорок", все-таки содержит "минус 22:20". А из-за этого и сумма интервалов считается не правильно. Если все времена будут в пределах одних суток (ну, как в третьей строке - началось вечером накануне, а закончилось сегодня утром), то поправка будет совсем небольшой. Что-то вроде
=C5-B5 + N(CURRENT()<0)
=C5-B5 + Ч(ТЕКУЩ()<0) (это для русскоязычных формул)

А формат - это просто: нажми Ctrl+1 и введи код формата [MM]:SS
А чтобы получить число минут - домножь результат на 24 часа и 60 минут
=D7*60*24
Эту ячейку нужно будет отформатировать как число (иначе получишь ерунду какую-нибудь)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Zomgmeister

Спасибо, получилось. Могли бы вы растолковать, что такое «Ч(ТЕКУЩ()<0)», чтобы я видел это не как иероглиф, а как что-то осмысленное?

JohnSUN

Ну, начнем с N() или Ч(). Просто преобразовать результат в число. В скобках у нас логическое выражение "а не больше ли это нуля?", которое возвращает FALSE или TRUE. И ЛибреОффис последние несколько лет знает, что это 0 или 1. Другие офисы могут не понять. Поэтому с помощью этой функции преобразуем результат сравнения в 0 или 1.
Применительно к дате-времени эта единица обозначает "один день" ("полные сутки", "24 часа").
Если результат вычитания ячеек окажется меньше нуля, прибавим 24 часа и получим правильный временной интервал.

CURRENT() или ТЕКУЩ() - это функция, которой, кажется, нет в Эксель. Если грубо, "на пальцах", то означает "то, что уже вычислено"
То есть в формуле можно было бы написать
=C5-B5 + N((C5-B5)>0)

Другими словами - вычислить C5-B5 дважды.
Вместо этого формула добравшись до функции ТЕКУЩ() смотрит, что уже успели насчитать (разность ячеек до знака "плюс") и использует это значение, сравнивает его с нулём, получает ИСТИНА или ЛОЖЬ, преобразует их в 1 или 0 и прибавляет к уже вычисленной разности ячеек.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Zomgmeister

Замечательно, ещё раз спасибо!