我有许多带有相应值的字符串。给定一组关键字,我想返回行字符串与给定关键字之一匹配的所有值的总和。
我在这里提供了一个示例工作簿:
我知道你可以使用INDEX和MATCH来匹配多个值,但是由于我似乎试图将一个数组与另一个数组进行比较,因此我没有采用这种方法,而INDEX MATCH方法似乎需要用于比较的有限或固定范围的关键字。
非常感谢任何帮助或指示。
答案 0 :(得分:1)
我相信您可能错过的是在尝试将字符串与单元格匹配时可以使用通配符。
使用公式=SUMIF(data!A:A;"*Alaska*";data!B:B)
我想我会得到你想要的那个关键字的结果。假设您要测试的状态在单元格A3中,此公式的稍微更一般的形式为=SUMIF(Data!A:A;"*"&A3&"*";Data!B:B)
。
如果你想测试几个,我只需在上面的表格上添加几个sumifs
,除非你想要使用很多标准。如果是这种情况,您将不得不使用数组公式,=SUM(SUMIF(data!A:A;{"*Alaska*";"*Alabama*"};data!B:B))
等形式的内容。the answer中的更多内容我从中复制了该解决方案;)
我认为在搜索引擎中没有任何方法可以同时包含通配符和范围,但我当然可能会弄错。
答案 1 :(得分:1)
这是一个数组公式版本(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 输入在D3中输入并根据需要下拉。
对于单细胞配方,这似乎工作正常(F3): -
=SUM(Data!B2:B99999*(LEFT(Data!A2:A99999,LEN(TRANSPOSE(A3:A7)))=TRANSPOSE(A3:A7)))
或(F4)
=SUM(IF(ISNUMBER(Data!B:B),Data!B:B)*(LEFT(Data!A:A,LEN(TRANSPOSE(A3:A7)))=TRANSPOSE(A3:A7)))
但请注意,如果A3:A7中有空白单元格,则会选择所有数据并将其添加到各个总计中。第二和第四个版本很慢。