извлекать значения из другого листа на основе нескольких условий - PullRequest
0 голосов
/ 25 апреля 2020

таблица 1, рабочий лист a

+-----------+------------+-----------+------------------------+
| recipient | activity   | funding a | funding b from table 2 |
+-----------+------------+-----------+------------------------+
| group 1   | basketball | 200       |                        |
+-----------+------------+-----------+------------------------+
| group 1   | soccer     | 80        |                        |
+-----------+------------+-----------+------------------------+
| group 2   | soccer     | 18        |                        |
+-----------+------------+-----------+------------------------+
| group 3   | tennis     | 35        |                        |
+-----------+------------+-----------+------------------------+

таблица 2, рабочий стол b

+-----------+------------+-----------+
| recipient | activity   | funding b |
+-----------+------------+-----------+
| group 1   | basketball | 100       |
+-----------+------------+-----------+
| group 1   | soccer     | 50        |
+-----------+------------+-----------+
| group 2   | soccer     | 25        |
+-----------+------------+-----------+
| group 3   | tennis     | 30        |
+-----------+------------+-----------+

Моя цель - вставить значения из столбца «финансирование b» из таблицы 2 рабочего листа b в таблицу 1 лист а. Имейте в виду, что это упрощенная таблица, и значения в моих исходных таблицах не упорядочены.

Я попытался ввести следующее в ячейку «финансирование b из таблицы 2» таблицы 1 и получил ошибку:

=INDEX(table2[funding b],MATCH(1,([@[recipient]]=table2[Recipient])&([@[funding a]]=table2[fundingb]),0))

Я не уверен, что делать дальше, поэтому любая помощь или советы будут оценены с использованием формул или силовых запросов.

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Альтернативы (гораздо менее эффективны, чем ответ @ basi c). Используйте помощник по столбцам в таблице 2. Мы создаем столбец id с:

=CONCAT(Table2[@[recipient]:[activity]])

, затем мы используем стандартный VLOOKUP.

=VLOOKUP(CONCAT(Table1[@[recipient]:[activity]]),Table2[#All],4,FALSE)

Другой вариант: этот ужасный вкладыш (использует текст функции):

=INDEX($I$3:$K$6,(LEN(LEFT(TEXTJOIN(";",TRUE,$I$3:$J$6),SEARCH(TEXTJOIN(";",TRUE,B3:C3),TEXTJOIN(";",TRUE,$I$3:$J$6))))-LEN(SUBSTITUTE(LEFT(TEXTJOIN(";",TRUE,$I$3:$J$6),SEARCH(TEXTJOIN(";",TRUE,B3:C3),TEXTJOIN(";",TRUE,$I$3:$J$6))),";","")))/2+1,3)

Vlook

0 голосов
/ 26 апреля 2020

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

=SUMPRODUCT(([@recipient]=Table2[recipient])*([@activity]=Table2[activity])*Table2[funding b])

Если не уникален, используйте INDEX / MATCH в качестве формулы массива для возврата первого значения найдено:

=INDEX(Table2[funding b],MATCH(1,([@recipient]=Table2[recipient])*([@activity]=Table2[activity]),0))

Формула массива после редактирования подтверждается нажатием ctrl + shift + enter

enter image description here

...