表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 |
+-----------+------------+-----------+
我的目标是将表2工作表b中“资金b”列中的值插入表1工作表a中。请记住,这是一个简化的表,并且值在我的原始工作表中是无序的。
我尝试在表1的“来自表2的资金b”单元中输入以下内容,但出现错误:
=INDEX(table2[funding b],MATCH(1,([@[recipient]]=table2[Recipient])&([@[funding a]]=table2[fundingb]),0))
我不确定如何继续进行操作,因此无论是使用公式还是使用power-query,任何帮助或提示都将不胜感激。
谢谢
答案 0 :(得分:0)
如果我理解正确,则需要通过搜索收件人和活动来在第二张表中找到合适的资金。如果是这样,如果收件人和活动的组合是唯一的,则可以使用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
确认编辑后的数组公式
答案 1 :(得分:0)
替代方法(远没有@basic的答案有效)。在表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)