首页 > 解决方案 > 基于两个或多个查找键填充列的数组公式?

问题描述

有一个三列表。前两列中的每一行都有一个唯一标识符(但各列中的值不是唯一的)。第三列包含表中每一行的值。

然后是另一个三列表。前两列中的每一行都是要在第一个表中查找的值,以用相应的值填充第三列。所以我一直试图想出一个数组公式来填充第三列。

标签: arraysgoogle-sheetsgoogle-sheets-formulaarray-formulasgs-vlookup

解决方案


这里使用vlookup、query、arrayformula等获取求和数据,假设A21到B25为唯一master,I16到K19是分布数据,I16到J19是A21到B25的唯一master,如果数据与我的假设不同,实际上改变它们:

=arrayformula(vlookup(arrayformula(len({A21:A25}) & ":" & len ({B21:B25}) & ":" & {A21:A25} & {B21:B25}),query({arrayformula(len({I16:I19}) & ":" & len ({J16:J19}) & ":" & {I16:I19} & {J16:J19}),arrayformula(if(isnumber(K16:K19),K16:K19,0))},"select Col1, sum(Col2) group by Col1"),2,false))

我将两列与每列的标识符长度和冒号结合起来,因为我希望我的列组合是唯一的,如果我结合 'aaa' 和 'aaaa' 将与 'aaaa' 和 'aaa' 相同,但如有必要可以省略缩短公式:

=arrayformula(vlookup(arrayformula({A21:A25} & {B21:B25}), query({arrayformula( & {I16:I19} & {J16:J19}), arrayformula(if(isnumber(K16:K19), K16:K19, 0))}, "select Col1, sum(Col2) group by Col1"),2,false))

推荐阅读