总和结果匹配值的数组。

我有一些string与相应的值。 给定一组关键字,我想返回行string与给定关键字之一相匹配的所有值的总和。

我在这里提供了一个示例工作簿:

https://onedrive.live.com/redir?resid=73DBED9E450E4673!107&authkey=!ALLfOf0NyFxao-U&ithint=file%2cxlsx

我知道你可以使用INDEX和MATCH来匹配多个值,但是由于我似乎试图比较一个数组和另一个数组,而INDEX MATCH方法似乎采用了有限的方式,或用于比较的关键字的固定范围。

任何帮助或指针将不胜感激。

我相信你可能会错过的是,当你试图将一个string匹配到一个单元格时,你可以使用通配符。

使用公式=SUMIF(data!A:A;"*Alaska*";data!B:B)我想我得到你想要的那个关键字的结果。 假设您要testing的状态在单元格A3中,则此公式的稍微更一般的forms是=SUMIF(Data!A:A;"*"&A3&"*";Data!B:B)

如果你想testing几个,除非你想使用很多标准,否则我只sumifs在上面的表单中添加几个sumifs 。 如果是这样,你将不得不使用一个数组公式, =SUM(SUMIF(data!A:A;{"*Alaska*";"*Alabama*"};data!B:B))等等。在这个答案中,我复制了这个解决scheme。

我不认为有任何方法可以在检索词中包含通配符和范围,但我当然可能会误解。

这是一个数组公式版本(F1): –

 =SUM(Data!B$2:B$99999*(LEFT(Data!A$2:A$99999,LEN(A3))=A3)) 

或(F2)

 =SUM(IF(ISNUMBER(Data!B:B),Data!B:B,0)*(LEFT(Data!A:A,LEN(A3))=A3)) 

必须使用Ctrl Shift Enter在D3中input并根据需要拉下。

对于单细胞的公式,这似乎工作正常(F3): –

 =SUM(Data!B2:B99999*(LEFT(Data!A2:A99999,LEN(TRANSPOSE(A3:A7)))=TRANSPOSE(A3:A7))) 

OR(F4)

 =SUM(IF(ISNUMBER(Data!B:B),Data!B:B)*(LEFT(Data!A:A,LEN(TRANSPOSE(A3:A7)))=TRANSPOSE(A3:A7))) 

但请注意,如果A3:A7中有一个空白单元格,则将select所有数据并将其添加到单个总计中。 第二和第四个版本很慢。

在这里输入图像说明