Страницы: 1
RSS
Как проитерировать по массиву формулами (в крайнем случае VBA) для получения результата в виде отдельных строк с подсчетом суммы
 
Здравствуйте!

Возможно ли получить формулами результат как в примере? У каждого животного может быть 1 или несколько строк еды.
Нужно из диапазона данных получить на выходе результат из строк, где в отдельной строке было бы животное (A), все привязанные к этому животному типы еды (B) через запятую и сумма веса всей еды © для животного.
Если без VBA совсем никак, киньте пожалуйста пример наиболее близкого к задаче кода, я его переделаю под себя.
Excel 2010.

Спасибо!
 
Carramba, не нужно писать через строку.
У у Вас в сообщении не описана задача. Да и с названием темы не очень. Предложите новое - модераторы поменяют.
 
Юрий М,добавил описание текстом, старая постановка задачи (файл примера поменял) не актуальна, т.к. решается обычным "суммесли".
Тему затрудняюсь как правильнее описать. Может так: Как проитерировать по массиву формулами (в крайнем случае VBA) для получения результата в виде отдельных строк с подсчетом суммы.
 
Цитата
Carramba написал:
Как проитерировать по массиву формулами
слово то какое, почти как проинтегрировать но .....  :D

1. Если таких "итераций" не много то массивная
=IFERROR(INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");))&" любит "&
INDEX(B:B;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));1))&", может съесть аж "&INDEX(C:C;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));1))&" кг."&
IFERROR(","&INDEX(B:B;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));2))&", может съесть аж "&INDEX(C:C;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));2))&" кг.";)&
IFERROR(","&INDEX(B:B;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));3))&", может съесть аж "&INDEX(C:C;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));3))&" кг.";)&
IFERROR(","&INDEX(B:B;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));4))&", может съесть аж "&INDEX(C:C;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));4))&" кг.";)&
IFERROR(","&INDEX(B:B;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));5))&", может съесть аж "&INDEX(C:C;SMALL(IF($A$2:$A$9=INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));ROW($A$2:$A$9));5))&" кг.";)&
", а всего может сьесть еды "&SUMIF(A:A;INDEX(A:A;1+MATCH(0;COUNTIF($G$1:G1;$A$2:$A$9&" *");));C:C)&" кг. ";"")

2. если много то если версия Excel  свежая, то можно сварганить, или UDF/.
Изменено: БМВ - 05.07.2020 16:11:32
По вопросам из тем форума, личку не читаю.
 
БМВ,Спасибо, всё работает! Не ожидал, что настолько запутанно будет ) Можно пару дурацких вопросов? Почему идёт ссылка на пустые ячейки $G$1:G1 ? Есть ли какие-то статьи, книги, на русском или английском, объясняющие как научиться составлять подобные формулы? Интересует именно комбинирование формул с целью обработки значений, поступающих в виде массива как результат других формул. Возможно есть какие-то общие принципы и подходы для решения подобных задач?
 
Цитата
Carramba написал:
Почему идёт ссылка на пустые ячейки $G$1:G1
наверняка на сайте  есть в приемах список уникальных формулой. Если по простому нам надо проверить а было ли значенеи раньще, и взять первое которого еще небыло.
Цитата
Carramba написал:
сть ли какие-то статьи, книги, на русском или английском, объясняющие как научиться составлять подобные формулы?
конечно вот тут  полно материала :-)
Изменено: БМВ - 06.07.2020 19:23:50
По вопросам из тем форума, личку не читаю.
 
Спасибо!
Вашего юмора не понимаю ) Ссылка не открывается.
 
ну да. это я случайно не то вставил. Исправил выше.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх