如果另一列包含 Excel 中的某个子字符串文本,则取平均值

如果另一列包含 Excel 中的某个子字符串文本,则取平均值

我正在寻找一种方法来对一列(比如 B 列)中的数值进行平均,前提是 A 列中的字符串包含某个文本。

例如:

(In column A) (In column B)
Hello table . . . 1
Hello desk  . . . 2 
Bye table   . . . 3
Bye desk  . . . . 4

因此,如果平均数字的标准是“桌子”,则答案将是 (2 + 4)/2=3。

我目前想到的是:

=AVERAGEIF(A1:A5, SEARCH("desk",B1:B5),B1:B5) 

但它返回一个错误,因为 SEARCH 只接受一个输入。

有什么建议么?

答案1

*在单词“desk”之前和/或之后添加星号通配符,例如:

=AVERAGEIF(A1:A5,"*desk",B1:B5)

或者

=AVERAGEIF(A1:A5,"*desk*",B1:B5)

这告诉 Excel 忽略单词“desk”之前/之后的任何字符。

答案2

好吧,作为一个对您有用的通用答案,另一种在函数内执行条件的方法(在您的例子中是 AVERAGE 内的 IF)您可以随时将其分开。 IF 语句也可以返回一个数组,而不必是单个值。

如果你输入

=AVERAGE(IF(ISERROR(SEARCH("desk",A1:A5))=FALSE,A1:A5))

并在输入后按 ++,然后它会将输入视为数组而不是值,并给出结果CtrlShiftEnter

希望这可以帮助!

答案3

平均收益是 Excel 2013 及以上版本的最佳答案。对于旧版本,您需要使用第三列 C。

C 列中的所有单元格(左侧有值)均具有以下公式:=IF(ISNUMBER(SEARCH(C$7,A1)), B1, "")

单元格 C7 只需输入单词desk,这样每次更改搜索时就不需要修复这些公式。

之后,您只需在 C5 中计算平均值=AVERAGE(C1:C4)即可。这就是您所需要的。实际上并没有浪费太多空间,如果您只想在需要时调整功能,您也可以摆脱搜索框。

答案4

我不确定您是否可以使用 C 列,但这里有一个我已经测试过的选项。

在单元格 C1 中,输入以下公式:=IF(ISNUMBER(SEARCH("desk",A1)),B1,"")

将此公式复制/粘贴到 C 列的每一行

计算 C 列中显示的金额的平均值。

如果 C 列已被使用,则只需在其位置插入另一列

相关内容