Страницы: 1
RSS
Поиск вхождения нескольких подстрок
 
Здравствуйте!

Подскажите, пожалуйста, как найти вхождение нескольких подстрок и в зависимости от этого сделать то или иное действие?
 
Код
=ЕСЛИ(СУММ(--ЕЧИСЛО(ПОИСК({"Premier Support";"Installation service";"Update License"};B4)));C4*3;C4/2)
Изменено: Михаил С. - 25.12.2012 16:35:31
 
Михаил, спасибо!
А если немного усложнить: подстроки, которые надо искать, могут переодически меняться - добавляться новые, удаляться старые.
Можно ли как-то завести отдельный диапазон этих подстрок (например отдельную таблицу с этими фразами на отдельном листе) и в формуле использовать имя этой таблици? Чтобы не переделывать каждую формулу при изменении количества подстрок

Еще раз спасибо
 
длинный вариант
=ЕСЛИ((ЕОШ(НАЙТИ("Premier Support";B4;1))+ЕОШ(НАЙТИ("Installation service";B4;1))+ЕОШ(НАЙТИ("Update License";B4;1)))<3;C4*3;"")
=ЕСЛИ((ЕОШ(НАЙТИ("Premier Support";B4;1))+ЕОШ(НАЙТИ("Installation service";B4;1))+ЕОШ(НАЙТИ("Update License";B4;1)))=3;C4/2;"")
 
Цитата
Maximka пишет:
Можно ли как-то завести отдельный диапазон этих подстрок
Можно, но тогда это уже будет формула массива
Код
=ЕСЛИ(СУММ(--ЕЧИСЛО(ПОИСК($A$1:$A$7;B4)));C4*3;C4/2) 
 
Теперь всегда все умножается на 3, т.к. пустые подстроки всегда входят
 
Тогда слегка модернизируйте формулу:

Код
=ЕСЛИ(СУММ(--ЕЧИСЛО(ПОИСК(ЕСЛИ(ЕТЕКСТ($A$1:$A$7);$A$1:$A$7);B4)));C4*3;C4/2) 
 
Цитата
Maximka пишет:
Теперь всегда все умножается на 3, т.к. пустые подстроки всегда входят
Да, что-то я не проверил, что получается. Массив
Код
=ЕСЛИ(МАКС(ЕЧИСЛО(ПОИСК($A$1:$A$7;B4))*($A$1:$A$7<>""));C4*3;C4/2)
 
=ЕСЛИ(ИЛИ(--ЕЧИСЛО(ПОИСК({" Premier Support";"Installation service";"Update License"};B4)));C3*3;C4/4)
 
vikttur,  практически та же формула в моем первом ответе. В твоем "--" - лишний.
 
Ага, проморгал.
 
Михаил С.,

Спасибо огромное! Похоже, это именно то, что было нужно.
 
Возник еще один вопрос: как просуммировать только те ячейки, в которые входят нужные подстроки?
 
=СУММ(ЕСЛИ(МУМНОЖ(ДЛСТР(ПОДСТАВИТЬ(B4:B20;ТРАНСП(A1:A3);));{1:1:1})<>ДЛСТР(B4:B20)*3;C4:C20))
Формула массива
 
Код
=СУММ(МУМНОЖ(-ЕЧИСЛО(ПОИСК(ТРАНСП(A1:A10);B4:B20));(-(A1:A10<>"")))*C4:C20) 

или, если нужны утроенные значения:

Код
=СУММ(МУМНОЖ(-ЕЧИСЛО(ПОИСК(ТРАНСП(A1:A10);B4:B20));(-(A1:A10<>"")))*C4:C20) *3
Изменено: Михаил С. - 26.12.2012 20:51:37
 
А вот такая формула массива сойдет?
=СУММ(--ЕЧИСЛО(ПОИСК(test2;B4:B20))*C4:C20)
test2 - это имя диапазона, где указаны подстроки. и считается, что в этом диапазоне нет пустых строк.
 
А вы проверили? работает? если работает - сойдет,... но мне кажется - вряд ли...
 
У меня вроде заработало
 
Михаил С., благодарствую Вам лично и всем гуру экселя низкий поклон.
Очень мне помогла сия формула, только с одной доработкой - искомое вхождение должно быть в самом начале и возвращаемое значение должно было быть ИСТИНА/ЛОЖЬ:
Код
=МАКС(ЕСЛИ(ЕЧИСЛО(ПОИСК(т_ИСКЛЮЧИТЬ!$A$2:$A$10;$C2));ПОИСК(т_ИСКЛЮЧИТЬ!$A$2:$A$10;$C2)=1)*(т_ИСКЛЮЧИТЬ!$A$2:$A$10<>""))>0 
Простите, что поднял старую тему, но благодарность моя не дала мне смолчать.  :oops:  _/\_

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Читают тему
Наверх