Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

25 Апрель 2019, 23:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Ошибка в формуле  (Прочитано 3218 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Des
Новичок
*
Offline Offline

Сообщений: 4


« Стартовое сообщение: 7 Апрель 2015, 02:27 »

По работе переходим на LibreOffice и столкнулись с тем, что не работают некоторые формулы. Помогите разобраться где ошибка в формуле:

=IF(ISERROR(DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)&"/"&MONTH(B23)+1&"/"&YEAR(B23))));IF(ISERROR(DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-1&"/"&MONTH(B23)+1&"/"&YEAR(B23))));IF(ISERROR(DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-2&"/"&MONTH(B23)+1&"/"&YEAR(B23))));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-3&"/"&MONTH(B23)+1&"/"&YEAR(B23)));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-2&"/"&MONTH(B23)+1&"/"&YEAR(B23))));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-1&"/"&MONTH(B23)+1&"/"&YEAR(B23))));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)&"/"&MONTH(B23)+1&"/"&YEAR(B23))))

$G$11 = NOW()
B23 = G11

Суть формулы: заполнять столбец датами с прибавлением +1 к месяцу, то есть, если дата 03.04.2015, то ниже будет число 03.05.2015.

По отдельности пробовал формулу. Все работает. Все вместе нет... Пробовал заключать в кавычки выражение: IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)&"/"&MONTH(B23)+1&"/"&YEAR(B23))). В результате получил сообщение: Значение!

В MS Excel эта формула работает. В Calc - нет.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 7 Апрель 2015, 05:29 »

Хочешь честно? Я бы на месте Calc'а тоже забастовал и не стал бы эту формулу считать - решил бы, что меня троллят.
Если я скажу, что в формуле мало скобок - не поверишь, наверное?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Des
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #2: 7 Апрель 2015, 06:14 »

Хочешь честно? Я бы на месте Calc'а тоже забастовал и не стал бы эту формулу считать - решил бы, что меня троллят.
Если я скажу, что в формуле мало скобок - не поверишь, наверное?


С этим проблем нет. Я не все скобки скопировал...

=IF(ISERROR(DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)&"/"&MONTH(B23)+1&"/"&YEAR(B23))));IF(ISERROR(DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-1&"/"&MONTH(B23)+1&"/"&YEAR(B23))));IF(ISERROR(DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-2&"/"&MONTH(B23)+1&"/"&YEAR(B23))));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-3&"/"&MONTH(B23)+1&"/"&YEAR(B23)));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-2&"/"&MONTH(B23)+1&"/"&YEAR(B23))));DATEVALUE(IF(MONTH(B23)=12;DAY($G$11)&"/"&1&"/"&YEAR(B23)+1;DAY($G$11)-1&"/"&MONTH(B23)+1&"/"&YEAR(B23)))))

Смотрел по отдельности формулу работает, а все вместе нет...
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 7 Апрель 2015, 06:43 »

И всё ещё мало. Не хватает скобок во всех местах, где между амперсандами выполняются какие-то арифметические действия.
Амперсанд - это оператор конкатенации, сцепления (сцепливания? склеивания?) строк. Если мы подсунем ему число  вместо строки, он постарается преобразовать его в строку и всё-таки прицепить к результату.
Но если между двумя амперсандами попадается что-то вроде "месяц плюс один", Calc теряется - то ли нужно превратить уже сцепленную строку в число и прибавить единицу, то ли добавить к месяцу единицу, получившееся число преобразовать в строку и прилепить к тому что уже было слеплено. Вот чтобы облегчить Calc'у этот выбор и нужно брать в скобки все арифметические действия внутри конкатенации.

Но это всё касалось твоего вопроса " Где ошибка в этой формуле?". А вообще-то для решения описанной задачи (даты с шагом) можно использовать специальные функции для работы с датами-временем
« Последнее редактирование: 7 Апрель 2015, 06:46 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Des
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #4: 7 Апрель 2015, 06:56 »

И всё ещё мало. Не хватает скобок во всех местах, где между амперсандами выполняются какие-то арифметические действия.
Амперсанд - это оператор конкатенации, сцепления (сцепливания? склеивания?) строк. Если мы подсунем ему число  вместо строки, он постарается преобразовать его в строку и всё-таки прицепить к результату.
Но если между двумя амперсандами попадается что-то вроде "месяц плюс один", Calc теряется - то ли нужно превратить уже сцепленную строку в число и прибавить единицу, то ли добавить к месяцу единицу, получившееся число преобразовать в строку и прилепить к тому что уже было слеплено. Вот чтобы облегчить Calc'у этот выбор и нужно брать в скобки все арифметические действия внутри конкатенации.

Но это всё касалось твоего вопроса " Где ошибка в этой формуле?". А вообще-то для решения описанной задачи (даты с шагом) можно использовать специальные функции для работы с датами-временем
Не хватает скобок во всех местах, где между амперсандами выполняются какие-то арифметические действия


Добавлял ему скобки. Он их автоматом убирает.

Попроще уже пробовал формулу. не подходит. Либо напишите свою, аналогичную
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #5: 7 Апрель 2015, 07:55 »

Как насчет
Код:
=<предыдущая дата>+DAYSINMONTH(<предыдущая дата>)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 696


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #6: 7 Апрель 2015, 08:12 »

Суть формулы: заполнять столбец датами с прибавлением +1 к месяцу, то есть, если дата 03.04.2015, то ниже будет число 03.05.2015.
Эта задача решается заполнением рядов.


* Заполнить ряды.png (71.76 Кб, 767x375 - просмотрено 23 раз.)

* Результат.png (31.25 Кб, 356x391 - просмотрено 19 раз.)
Записан

rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 696


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 7 Апрель 2015, 08:51 »

Помогите разобраться где ошибка в формуле:
У вас при вычислении дат не получается ошибка, даже если результат не такой какой надо, поэтому функция ISERROR всегда будет выдавать FALSE. Реально будет работать только конец формулы(значение_иначе):
Код:
DATEVALUE(IF(MONTH(B29)=12,DAY($G$11)&"/"&1&"/"&YEAR(B29)+1,DAY($G$11)&"/"&MONTH(B29)+1&"/"&YEAR(B29)))
всё что ему предшествует не будет выполняться никогда. ISERROR здесь не подходит.
Записан

Des
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #8: 10 Апрель 2015, 04:43 »

Как насчет
Код:
=<предыдущая дата>+DAYSINMONTH(<предыдущая дата>)

Сработала формула=) Спасибо!!!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!