Сумировать только если содержится определенный текст в ячейке

Автор spada, 20 августа 2015, 15:06

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

spada

Сумировать только если содержится определенный текст в ячейке
В Джаве есть такой метод java.lang.String.contains()
Есть ли он в формулах? Или как решить такую задачу с помощью формул.

Чтоб не быть много словным все в примере.

tagezi

Цитата: spada от 20 августа 2015, 15:06
Сумировать только если содержится определенный текст в ячейке
В Джаве есть такой метод java.lang.String.contains()
Есть ли он в формулах? Или как решить такую задачу с помощью формул.

Чтоб не быть много словным все в примере.
Сколько лет читаю форумы, меня всегда выбивает из седла фраза "Суммировать если пусто" или "Суммировать если текст". 0+0=0 зачем суммировать, а текст вообще не суммируется =)
Если одно условие:
SUMIF(Диапазон_для_условия; Условие; Диапазон_суммирования)
С текстом:
=SUMIF(Диапазон для поиска;"";Диапазон суммирования)
В "" пишите свой текст.
С регепсом, например так:
=SUMIF(Диапазон для поиска;".*Кусок_что_ищем.*";Диапазон суммирования)
со ссылкой на ячейку:
=SUMIF(Диапазон для поиска;".*"&Адрес_Ячейки&".*";Диапазон суммирования)
По регепсам можно тут посмотреть https://help.libreoffice.org/Common/List_of_Regular_Expressions/ru
Если много условий используем:
=SUMIFS(Диапазон_суммирования;Диапазон_для_условия1; Условие1;...;Диапазон_для_условия30; Условие30)
Там всё аналогично.
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

spada

Спасибо меня смутили Эти амперсанты *"&Адрес ячейки&".*"  пробовал регулярные выражения без них...
СПА-СИ-БО!

tagezi

Цитата: spada от 20 августа 2015, 15:59меня смутили Эти амперсанты *"&Адрес ячейки&".*"
Амперсан - это как + для чисел, только для строк. Он просто объединяет строки. В условии стоит строка ".*" потом ссылка на ячейку, а затем ещё одна строка ".*". Естественно их нужно объединить, для этого и используется амперсанд.
Ссылка на ячейку удобна, чтобы не лазить каждый раз в формулу и править её под новое условие. Можно просто задать нужную комбинацию в ячейке. Кроме того, в этой ячейке можно сделать выпадающий список, чтобы не вводить каждый раз руками, а просто клацать мышкой. Меню -> Данные -> Проверка... там выбрать в выпадающем списке либо Список либо Диапазон ячеек. Дальше надеюсь сами разберётесь.
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

spada

Если в названии используется знак - ? , то формула не работает.  O0
Есть идеи как обойти это ограничение. Дело в том что в оригинале используется два разных файла и знак ? встречается в высланных отчетах и если заменить все знаки ? на всем листе то могут возникнуть ошибки. т.к. под ? могут использоваться разные нераспознаные буквы. Следовательно я вынужден использовать ? в своих ячейках ...

tagezi

Цитата: spada от 20 августа 2015, 21:30
Если в названии используется знак - ? , то формула не работает.  O0

Цитата: tagezi от 20 августа 2015, 12:30По регепсам можно тут посмотреть https://help.libreoffice.org/Common/List_of_Regular_Expressions/ru

Ну ладно, я сам прочитаю
Цитировать[абв123] - Представление одного из символов, находящихся в скобках.
и
Цитировать\ - Поиск воспринимает специальные символы после "\" как обычные символы, а не как регулярное выражение (за исключением сочетаний \n, \t, \> и \<). Например, "текст\." находит "текст.", а не "тексты" или "тексту".
Выводы, (нет, внимательно читать тоже нужно :)) если мы поставим вопросительный знак в квадратные скобки, то это будет не поиск нулевого числа или одного символа перед "?", а знак вопроса.
По секрету (хотя как видите в справке об этом тоже написано), этого же можно добиться если перед вопросительным знаком поставить обратную косую черту, в простонародье обратный слеш.
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha