Звездочки в формуле

Автор Fiona, 24 июля 2020, 11:14

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

Fiona

Здравствуйте!
Помогите, пожалуйста, советом...
В прошлый раз спрашивала, как бороться с тильдой, помогли - спасибо, работает формула. А здесь множественный выбор по вхождению строки из справочника не выбирает:
=СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*25111*")+СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*25112*")+СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*252016*")+СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*252017*")
Прямая ссылка только на конкретное значение работает, область в ошибку вылетает...
Чем можно в LO заменить выражение со звездочками?

mikekaganski

#1
А у Вас активны знаки подстановки в формулах?

Цитировать=СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*25111*")+СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*25112*")+СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*252016*")+СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;"*20*";$'60,62,63,76_контр'.$J$14:$J$25448;"*252017*")

А с регулярными выражениями было бы гораздо короче...

=СУММЕСЛИМН($'60,62,63,76_контр'.$AC$14:$AC$25448;$'60,62,63,76_контр'.$N$14:$N$25448;".*20.*";$'60,62,63,76_контр'.$J$14:$J$25448;".*251(11|12|16|17).*")
С уважением,
Михаил Каганский

Fiona


mikekaganski

Ну так у Вас противоречивые требования :-)

Знаки подстановки или регулярные выражения позволяют использовать обобщённые поисковые выражения (не конкретные). В Вашем случае, конечно, можно ещё заставить критерий искать не целиком значение ячейки...

Но любая такая настройка обязывает внимательно относиться к тому, что Вы ищете: нет ли вхождений специальных символов в искомой строке.

В случае знаков подстановки таких символов три: звёздочка * (любая строка любой длины), вопрос ? (строго один любой символ) и тильда ~ (маскировка спецсимволов, в т.ч. себя).

В случае регулярок всё с одной стороны сложнее, но с другой можно "замаскировать" целую строку с помощью \Q..\E. Тогда (если только искомая строка не содержит сама \E), можно использовать в формулах что-то вроде

"\Q" & A1 & "\E"

Но в любом случае чем мощнее инструмент, тем проще сломать им шею ;)
С уважением,
Михаил Каганский

kompilainenn

Цитата: mikekaganski от 24 июля 2020, 11:40тем проще сломать им шею
главное врагам ломать, а там чем проще, тем лучше
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

economist

#5
Если посмотреть как работают со счетами (20) и субсчетами 2-3 порядка (20.01.1) такие крупные программы как 1С - можно убедиться что они хранят их в таблицах раздельно, в двух столбцах.

Отдельное поле, четкое условие -> быстрый результат. Так же надо и в Calc - поделили столбец и посчитали без подстановки/регулярок, обычным СУММЕСЛИМН/SUMIFS.

Звездочки в формулах - сильно замедляют расчет и просто опасны, если приходится работать с файлом людям - старым Excelистам (там такого нет... PS: поправили, уже есть).
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

#6
Цитата: economist от 24 июля 2020, 12:59Звездочки в формулах - ... просто опасны, если приходится работать с файлом людям - Excelистам (там такого нет)

Охохо. Вот как раз в Excel звёздочки есть, и подстановочные знаки в ЛО добавили для совместимости с Excel. Регулярок там нет, правда.
С уважением,
Михаил Каганский

economist

Да, добавили в 16-19-й, в 2007 - нет (застрял на нем, каюсь)
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Разве?
С уважением,
Михаил Каганский

sokol92

Функция SUMIF (СУММЕСЛИ) как минимум с версии Excel 2003 (более старые версии мне не доступны) "понимает" подстановочные символы. Microsoft старается не модифицировать поведение существующих функций при выпуске новых версий (даже если эти функции содержат известные "баги").
Владимир.

sokol92

Возможность интерпретации в формулах документа знаков подстановок определяется свойством Wildcards документа.
Владимир.

economist

Ну что-ж, признаю ошибку и то что в LibreOffice как раз сделано грамотно, с возможностью отключения.

Единственное что меня до сих пор обескураживает в "вычислительных" настройках Calc - это возможность наоборот - "обеззвездивания" поиска. Я про флаг:

Условия поиска = и <> должны распространяться на всю ячейку   

Если его снять и вести себя как в Excel - то всевозможные ВПР/VLOOKUP начнут вычислять полную чушь.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Цитата: economist от 24 июля 2020, 17:23
Единственное что меня до сих пор обескураживает в "вычислительных" настройках Calc - это возможность наоборот - "обеззвездивания" поиска. Я про флаг:

Условия поиска = и <> должны распространяться на всю ячейку   

Если его снять и вести себя как в Excel - то всевозможные ВПР/VLOOKUP начнут вычислять полную чушь.

Не "всевозможные", а конкретно не созданные с расчётом на эту функцию. Как я упомянул в ответе #3, Fiona могла бы использовать эту настройку для обхода проблемы с отключёнными подстановочными знаками. Естественно, поскольку эта настройка действует на все формулы, все формулы должны быть готовы к этому ... но уж если кому-то надо, и в стандарте есть - ...
С уважением,
Михаил Каганский

Fiona

Спасибо, Михаил. Снова выручили - с регулярными все правильно считает: и с тильдой , и со звездочкой.

Fiona

Работало... пока не дали реальные данные...
Если в формуле стоит ссылка на ячейку (значение из справочника),
=СУММЕСЛИ($C$34:$C$31011;C21;$H$34:$H$31011)
содержащую в наименовании круглые скобки,
={1180400} Процентный доход по облигациям (кроме государственных)
итог не суммируется, пока не заменяю ссылку на конструкцию со звездами:
=СУММЕСЛИ($C$34:$C$31011;".*1180400.*";$H$34:$H$31011)
Все ячейки исправлять? Немыслимо... Никто не поймет...