Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

одсчет значений формулой "суммпроизв" по части слова

Автор alfatboy, 11.03.2022, 09:25

« назад - далее »

alfatboy

Добрый день!
Необходимо произвести подсчет значений за определенный период.
Использую формулу:
=СУММПРОИЗВ(($C$13:$C$19>=$B$1)*($C$13:$C$19<=$C$7)*($B$13:$B$19=B8)*($A$13:$A$19<>""))

В ячейке В8 - указано наименование по которому необходим подсчет АО "Фирма".
Проблема в том, что в таблице имеются разные наименования:
- АО "Фирма" ген.подряд ООО "Рога и копыта"
- АО "Спец" суб.подряд АО "Фирма"
и при этом необходимо подсчитать все ячейки где указано АО "Фирма"
пробовал изменить код на:
=СУММПРОИЗВ(($C$13:$C$19>=$B$1)*($C$13:$C$19<=$C$7)*($B$13:$B$19="*Фирма*")*($A$13:$A$19<>""))
не работает.
Как нужно прописать значение в формуле, чтобы подсчет был по нужной части слова "Фирма"?
Пример во вложении.

Serge 007

Здравствуйте

Вот эту часть формулы (B14:B20="*Фирма*") замените на ЕЧИСЛО(ПОИСК(B8;B14:B20))

Т. е. вместо формулы =СУММПРОИЗВ(($C$14:$C$20>=$B$1)*($C$14:$C$20<=$C$7)*($B$14:$B$20="*Фирма*")*($A$14:$A$20<>"")) должна быть формула =СУММПРОИЗВ((C14:C20>=B1)*(C14:C20<=C7)*ЕЧИСЛО(ПОИСК(B8;B14:B20))*(A14:A20<>""))
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

alfatboy

Спасибо работает, правда не понятно как)))

Serge 007

Цитата: alfatboy от 11.03.2022, 10:01...работает...не понятно как)))
:)

Функция ПОИСК() находит первое вхождение искомого текста (в ячейке В8 текст "АО "Фирма"") в просматриваемом массиве (B14:B20)
При этом возвращается массив значений {1:1:1:1:1:1:22}, т.к. в ячейках B14:B19 текст "АО "Фирма"" будет найден на первой позиции, а в ячейке В20 - на 22-й

В14: АО "Фирма"
В15: АО "Фирма"
В16:АО "Фирма"
В17: АО "Фирма"
В18: АО "Фирма" ген.подряд ООО "Рога и копыта"
В19: АО "Фирма" ген.подряд ООО "Рога и копыта"
В20: АО "Спец" суб.подряд АО "Фирма""

Далее функция ЕЧИСЛО() преобразует массив {1:1:1:1:1:1:22} в массив {ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА}, т.к. во всех ячейках поиска есть вхождения искомого текста и есть ЧИСЛА позиций вхождения

Далее функция СУММПРОИЗВ()
(можно также использовать и функцию СУММ(), но в этом случае формулу необходимо будет ввести как формулу массива нажатием сочетаний клавиш Ctrl+Shift+Enter)
, преобразовывает массив {ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА} в массив {1:1:1:1:1:1:1} , т. к. значение ИСТИНА эквивалентно значению 1

Ну и наконец, перемножив все массивы в формуле, функция СУММПРОИЗВ() возвращает их сумму
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390