Excel:使用关键字进行索引匹配,然后使用SUM结果(无VBA)

我有一张交易清单。 它包括交易描述和交易总成本。 我正在寻找一种方法,不使用Visual Basic,使用单元格中input的逗号分隔的关键字来search所有匹配的事务,然后给出它们的总值。

例如: 在这里输入图像说明

B4:B6是查找的关键字。 对于包含B1中任何关键字的所有单元格,应该在范围B10:B26中查找C4(tesco OR co-op OR waitrose),并返回范围C10:C26中相应值的总值。 在这种情况下,它应该是C11,C16,C21,C23,C25。

请注意,不应区分大小写。

可以这样做吗?

你可以用数组函数做到这一点。 这些function与“Sumifs”/“Countifs”/“Sumproduct”的操作类似:它们执行通常用于查看特定单元的function,覆盖整个单元格范围。

首先我们来处理“giffgaff”/“paypal”的总和:

在单元格C5中,使用以下公式[因为它是一个数组公式,因此每次编辑单元格时都必须按CTRL + SHIFT + ENTER来确认,而不是仅input],然后向下拖动到C6。

 =sum(if(iserror(search(B5,$B$10:$B$26)),"",$C$10:$C26)) 

这看着B10:B26的每一行(注意整个列不能被选中,因为数组公式会计算所有的单元格,甚至是空白的),所以这会显着的降低性能,你必须特别指定你关心的行)如果在B4中尝试search该术语时出现错误,则表示该术语不会显示在该特定行上。 如果没有错误,则从C列中取出数量。然后将所有这些行相加在一起得到一个总数。

现在要对单元格C4做同样的事情,您需要添加第一个分隔逗号之间的每个术语的复杂性。 我同意@Tom Sharpe,你可能应该在不同的单元格中做这个更清楚你在做什么。 这可以通过单独拉逗号之间的术语,然后有个人总数(使用上面的数组公式)。

为了最有效地做到这一点,我会在列C中使用一个助手列,这将确定B列中的文本中有多less个逗号,如下所示:在C4中:

 =len(B4)-len(substitute(B4,",","")) 

这需要B4的长度,而不是所有逗号被空格replace的B4长度 – 给出逗号#。

然后可以使用该公式来使用MID和SUBSTITUTE函数来分隔逗号之间的单词。 如果你需要详细说明如何做到这一点,请告诉我。 一旦你打破了单词,你可以使用上面的Array函数进行search。