我有一张带有交易清单的表格。它包括交易描述和交易总成本。 我正在寻找一种方法,不使用Visual Basic,使用在单元格中输入的逗号分隔关键字来搜索所有匹配的事务,然后给出它们的总值。
例如:
B4:B6是查找的关键字。 对于包含B1中任何关键字的所有单元格(tesco OR co-op OR waitrose),C4应在B10:B26范围内查找,并返回范围C10:C26中相应值的总值。在这种情况下,它应该是SUM C11,C16,C21,C23,C25。
重要的是要注意它不应区分大小写。
可以吗?
答案 0 :(得分:0)
您可以使用数组函数执行此操作。这些函数的操作类似于“Sumifs”/“Countifs”/“Sumproduct”:它们执行的功能通常用于查看整个单元格范围内的特定单元格。
首先让我们来总结“giffgaff”/“paypal”的总和:
在单元格C5中,使用以下公式[因为它是一个数组公式,您必须在每次编辑单元格时按CTRL + SHIFT + ENTER进行确认,而不是仅按ENTER进行确认],然后向下拖动到C6。
=sum(if(iserror(search(B5,$B$10:$B$26)),"",$C$10:$C26))
这将查看B10:B26中的每一行(请注意,无法选择整个列作为数组公式计算所有单元格,甚至是空白单元格 - 因此这会大大降低性能。您必须明确识别您关注的行,如如果在尝试在B4中搜索该术语时出现错误,则表示该术语未出现在该特定行上。如果没有错误,它会从C列中提取金额。然后将所有这些行汇总在一起得到一个总数。
现在要对单元格C4执行相同操作,您需要添加首先拉开逗号之间出现的每个术语的复杂性。我同意@Tom Sharpe你应该在不同的单元格中做到这一点,以便更清楚你正在做什么。这可以通过在逗号之间单独拉动术语,然后使用单独的总计(使用上面的数组公式)来完成。
为了最有效地做到这一点,我在C列中使用了一个辅助列,它将识别B列中文本中有多少逗号,如下所示,在C4中:
=len(B4)-len(substitute(B4,",",""))
这需要B4的长度,减去所有逗号被空格替换的B4的长度 - 给出逗号的数量。
然后可以使用MID和SUBSTITUTE函数将该公式用于分隔逗号之间的单词。如果您需要详细说明如何做,请告诉我。一旦你打破了单个单词,就可以使用上面的数组函数进行搜索。