sumif 中的公式或办公室中的其他假设函数

formulas in sumif or other something-if funtions in office

我正在尝试在 avgif 函数中使用 returns true 或 false 的函数作为标准, 例如,我在单元格 H2:H15 中有此列:

22,53
21,08
X
23,8
21,4
20,66
random string 1
21,51
Xaksjdjasd
23,45
19,9
27,76
22,4
oijf,mdknfsjp

我想计算上面最后 x 个单元格的平均值(x 是单元格 O26 中的数字),我试过:

=IF(ISNUMBER(H2);AVERAGEIF($H:$H2;&ISNUMBER($H:$H100);$H:$H2);"X")
=IF(ISNUMBER(H3);AVERAGEIF($H:$H3;ISNUMBER($H:$H101);$H:$H3);"X")
=IF(ISNUMBER(H4);AVERAGEIF($H:$H4;ISNUMBER($H:$H102);$H:$H4);"X")
=IF(ISNUMBER(H6);AVERAGEIF($H:$H6;"ISNUMBER($H:$H104)";$H:$H6);"X")
=IF(ISNUMBER(H7);AVERAGEIF($H:$H7;IF(ISNUMBER($H:$H104));$H:$H7);"X")
=IF(ISNUMBER(H8);AVERAGEIF($H:$H8;ISNUMBER("");$H:$H8);"X")
=IF(ISNUMBER(H9);AVERAGEIF($H:$H9;ISNUMBER(CELL("address"));$H:$H9);"X")
=IF(ISNUMBER(H10);AVERAGEIF($H:$H10;"="&IF(ISNUMBER(CELL("address"));CELL("contents");"");$H:$H10);"X")
=AVERAGEIF($H:$H11;"="&IF(ISNUMBER(CELL("address"));CELL("contents");"");$H:$H11)
=AVERAGEIF($H:$H12;&IF(ISNUMBER(CELL("address"));TRUE();FALSE());$H:$H12)
=AVERAGEIF($H:$H13;IF(ISNUMBER(CELL("address"));TRUE();FALSE());$H:$H13)

输出:

Err:510
#DIV/0!
#DIV/0!
#DIV/0!
#DIV/0!
#DIV/0!
#DIV/0!
#DIV/0!
#DIV/0!
Err:510
#DIV/0!

(是的,我正在尝试使用 cell() 作为函数当前正在评估的单元格,我想知道这是否可行,或者这是否是解决问题的糟糕方法)

我知道 avg() 会自动跳过每个非数字单元格,但我需要 avgif 才能工作,因为在那之后我想实现一个函数,对最后五个单元格取平均值,不计算字符串,例如,如果前最后 4 个单元格之一是一个字符串,x 设置为 6(计算当前单元格)该函数将平均当前单元格和至少 5 个以前的单元格(如果倒数第五个也是字符串,则更多)

感谢大家的帮助

SUMPRODUCT比AVERAGEIF等函数更强大。例如,从 A 列中的以下数据开始。

1              
2
random string
20

下面的公式求平均值,所以 23 除以 3 等于 7,66。

=SUMPRODUCT(A1:A4; ISNUMBER(A1:A4)) / SUMPRODUCT(ISNUMBER(A1:A4))

细分:

  • SUMPRODUCT(A1:A4; ISNUMBER(A1:A4))
    • ISNUMBER(A1:A4) 将为非数字的任何值 return 零,并且乘以零会导致为该行添加零。
    • 将对 A1:A4 中的其他行求和,在本例中为 23。
  • SUMPRODUCT(ISNUMBER(A1:A4)
    • SUMPRODUCT(ISNUMBER(A1:A4)) 将为每行有数字的行加 1,结果为有数字的行总数,在示例中为 3。

实际上在上面的例子中,公式可以更短,因为 SUMPRODUCT 排除了错误的结果。

=SUMPRODUCT(A1:A4) / SUMPRODUCT(ISNUMBER(A1:A4))

也许您正在尝试执行以下操作。如果它们是数字,它会从当前行向上计算所有行的平均值。

=IF(ISNUMBER($H15); SUMPRODUCT($H:$H15) / SUMPRODUCT(ISNUMBER($H:$H15)); "X")