我正在寻找一种方法来对一列(比如 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))
并在输入后按 ++,然后它会将输入视为数组而不是值,并给出结果Ctrl。ShiftEnter
希望这可以帮助!
答案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 列已被使用,则只需在其位置插入另一列