平均每n行并排除值

时间:2019-03-04 23:42:44

标签: excel

我想对每5行取平均值,但也要排除小于50的平均值。这是对每5行取平均值的命令。

=AVERAGE(OFFSET($L$3,(ROW()-ROW($P$2))*5,,5))

这是排除小于50的值的命令

=AVERAGEIF(L3:L8,">50")

如何将这两个命令合并在一起?

3 个答案:

答案 0 :(得分:2)

感谢我的一位同事,以下作品就像一颗宝石。

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:

Input: coins = [1, 2, 5], amount = 11
Output: 3 
Explanation: 11 = 5 + 5 + 1
Example 2:

Input: coins = [2], amount = 3
Output: -1

答案 1 :(得分:0)

只要您拥有Excel 2016,SUMPRODUCT公式就可以使用。

=SUMPRODUCT((MOD(ROW($A$1:$A100),5)=0)*($A$1:$A$100<50)*$A$1:$A$100)/SUMPRODUCT((MOD(ROW($A$1:$A100),5)=0)*($A$1:$A$100<50)*1)

我认为您的数据在A1:A100中,因此请根据需要进行更新。在MOD公式中,我在第5行中使用了5。如果需要更改,请更改MOD公式中的5。最后,该公式不包含值50,因为您表示希望小于50。

答案 2 :(得分:0)

“微小”差异

更正

=IFERROR(AVERAGEIF(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5),">50"),0)

可视化

让我们首先想象一下您实际在做什么。

enter image description here

对于列L中的每五行,如果它们的值大于或等于50,则显示它们的平均值。(在此示例中)列G中的列:

For L3:L8 in G2,
for L9:L13 in G3,
for L14:L18 in G4 etc.

问题

  • 第一个问题是该公式是专门为 第二行。如果希望第一个结果显示在第一行中,则公式将导致REF!错误。

    如果要在第一行中显示第一个结果,则必须 将L$2更改为L$1

    =IFERROR(AVERAGEIF(OFFSET(L$3,(ROW()-ROW(L$1))*5,,5),">50"),0)
    

    或对于第3 行,您必须将L$2更改为L$3

    =IFERROR(AVERAGEIF(OFFSET(L$3,(ROW()-ROW(L$3))*5,,5),">50"),0)
    
  • 第二个问题是您正在L列中执行某项操作,并且 没有明显的理由需要在公式中使用列P。你可以 已使用任何列ZANCG,但您在 列L,因此请使用L

  • 第三个问题是您已锁定列$L,这意味着 只要将公式放在一行中,结果都是一样的。如果 您不锁定它们,则可以复制公式,例如在右边和 它将显示列MNO等的结果。

    enter image description here

其他公式

=SUM(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5))
=COUNT(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5))
=AVERAGE(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5))
=SUMIF(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5),">50")
=COUNTIF(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5),">50")

AVERAGEIF在2007版的Excel中可用,但是对于较旧的版本,可以使用以下公式:

=IF(COUNTIF(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5),">"&50)=0,0,SUMIF(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5),">"&50)/COUNTIF(OFFSET(L$3,(ROW()-ROW(L$2))*5,,5),">"&50))

它首先检查COUNTIF是否产生0。如果显示,则显示0,否则将SUMIF除以COUNTIF