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

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

18 Октябрь 2017, 12:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Суммирование значений в отдельной строке с сохранением первоначального вида  (Прочитано 833 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sokol19
Новичок
*
Offline Offline

Сообщений: 2


« Стартовое сообщение: 29 Март 2017, 17:51 »

Добрый день!
описание скрина: слева вводится произвольный математический пример, а в правой части нужно чтобы выводился ответ на этот пример.
Подскажите, пожалуйста, какую нужно ввести формулу в C1, чтобы ответ выводился автоматом.
Спасибо.


* 1.png (5.58 Кб, 347x213 - просмотрено 19 раз.)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 29 Март 2017, 18:57 »

Ну, например, такую...

PS. Добро пожаловать на форум!

* Суммирование и не только.ods (10.37 Кб - загружено 12 раз.)
Записан

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

Сообщений: 2 090



« Ответ #2: 29 Март 2017, 20:47 »

Джон, файл через пару лет удалят и будем вспоминать, что там в нем было. Продублируй плиз формулу в текст поста. Спасибо
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #3: 29 Март 2017, 21:45 »

Джон, файл через пару лет удалят и будем вспоминать, что там в нем было. Продублируй плиз формулу в текст поста. Спасибо
Это волшебная формула, для открепления её от файла нужно знать заклинание Смеющийся
Записан

JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #4: 29 Март 2017, 22:23 »

Тема старая, способ очень старый. Если верить этому сообщению, то решена была пять - почти шесть - лет назад. Ну, в смысле, помечена как [Решено]. На самом деле решение неудовлетворительное.

Сама формула записывается как
Код:
=EVALUATE(<адрес ячейки с формулой в виде строки>;RAND())
А EVALUATE это вот такая функция:
Код:
Function evaluate(sourceRange As String) As Variant
Dim oSheets As Variant
Dim oSheet As Variant
Dim oWorkSheet As Variant
Dim sString As String
Dim oCell As Variant
Dim nValue As Double
evaluate = ""
On Error GoTo NothingToDo
oSheets = ThisComponent.getSheets()
oSheet = oSheets.getByIndex(1)
sString = Trim(oSheet.getCellRangeByName(sourceRange).getCellByPosition(0, 0).getString())
If sString = "" Then Exit Function
If Left(sString,1) <> "=" Then sString = "=" & sString
oWorkSheet = oSheets.getByIndex(0)

oCell = oWorkSheet.getCellRangeByName(sourceRange).getCellByPosition(0, 0)
oCell.setFormula(sString)
ThisComponent.calculate()
evaluate = oCell.getValue()
NothingToDo:
End Function
Просто берется строка из указанной ячейки, при необходимости дополняется знаком "=" слева и записывается как формула в ячейку с таким же адресом, но на соседнем, скрытом листе. Calc вычисляет результат, макрос считывает то, что получилось, и возвращает как результат функции.
Второй параметр Rand() просто даёт пинка этой функции, чтобы пересчитывалась при каждом изменении на листе.
Почему вычисление приходиться делать на соседнем листе? Потому что на время вычисления значения формулы текущий лист блокируется. Почему адрес ячейки текстовый? Потому что в противном случае пришлось бы использовать только одну ячейку на соседнем листе (например, A1). То есть, если на текущем листе будет несколько ячеек с =EVALUATE(...), то начнется путаница в значениях. А так для каждой "текстовой формулы" используется своя (соответствующая) ячейка на скрытом листе.
И наконец главный вопрос - почему это решение неудовлетворительное?
Потому что скрытый лист один, а листов с формулами может быть несколько. Потому что для вычислений используется книга с данными, в которой макрос без ведома пользователя что-то меняет. Потому что вместо встроенных механизмов офиса используется грязный хак...
Это волшебная формула, для открепления её от файла нужно знать заклинание Смеющийся
...а заклинание звучит так
However neither Calc nor any spreadsheet I'm familiar with has implemented an EVAL function.
Записан

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

Сообщений: 2


« Ответ #5: 29 Март 2017, 22:38 »

Спасибо, что откликнулись и помогли с решением проблемы, жаль, что нет простой формулы и приходится использовать макрос, но в любом случае - Вы очень помогли. Спасибо Улыбка
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 713


« Ответ #6: 30 Март 2017, 08:01 »

В #4 вполне нормальное решение, поскольку уровень задачи - "учебно-познавательный".

Для более серьезной, частой и полезной задачи - отображать сам текст формулы из С3 в A1 - есть специальная формула =ФОРМУЛА(С3), извиняюсь за тавтологию. Она позволяет показать ход простых вычислений.

К сожалению, гораздо более важные в жизни формулы вида =VLOOKUP()/=ВПР(), без которых пользователь Calc считается безграмотным, таким образом визуализировать бесполезно, т.к. лучшая практика - это многократное ручное написание формулы, чтобы запомнить на века "эти три аргумента".    

А так для решения подобных задач есть "формульные" калькуляторы. Там можно вводить значки интегралов, делать многоэтажные дроби, как в учебниках - и о чудо, они будут рассчитаны. Несколько мобильных приложений умеют распознавать их со снимка камеры, буквально вчера поймал чудика на экзамене за этим занятием, он не мог посчитать объем усеченного конуса, зная формулу расчета обычного. Да, люди с высшим образованием не умеют пользоваться кнопкой M+ на калькуляторе.  

И еще есть команда Calc: Вид-Показать формулу, которая циклически меняет формулу и ее значение местами (можно назначить Ctrl+~, будет как в MS Excel).
« Последнее редактирование: 30 Март 2017, 08:08 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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