excel平均if-function高级

我正在尝试获取某些特定条目的平均值。 我有两列:A – 它是一个索引列(例如从1到1000)和B是值列。

我知道有一个AVERAGE函数,并有一个AVERAGE IF函数,这可能会帮助我,但我似乎无法按我需要的方式工作。 我需要做的是得到B列中与列A中索引匹配的描述的平均值:3 +(3 * n)其中n> = 0。在这种情况下,我需要平均值B列中的值在A中是3,6,9,12,15 …

用excel可以做到这一点吗?或者你认为编写一个程序来获得这些值会更好吗?

感谢您的提示!

-Jordi

您可以使用AVERAGE函数的“数组公式”,例如

=AVERAGE(IF(MOD(A2:A100,3)=0,IF(A2:A100>0,B2:B100)))

CTRL + SHIFT + ENTER确认

要根据您在simoco的回答中的意见进行修改,您可以使用此版本

=AVERAGE(IF(MOD(A2:A100-11,3)=0,IF(A2:A100-11>=0,B2:B100)))

这将平均为11,14,17,20等。

您可以使用SUMPRODUCT进行以下操作:

 =SUMPRODUCT((MOD(A1:A1000,3)=0)*B1:B1000)/MAX(1,SUMPRODUCT(1*(MOD(A1:A1000,3)=0))) 

说明:

  • MOD(A1,3)仅当A1值在forms3*n才会给出0
  • MOD(A1:A1000,3)=0给出了真/假值的数组{FALSE,FALSE,TRUE,FALSE,..}
  • (MOD(A1:A1000,3)=0)*B1:B1000返回列B中值的数组,其中列B中的相应值在窗体中3*n (否则为0 ): {0,0,12,0,..}
  • SUMPRODUCT((MOD(A1:A1000,3)=0)*B1:B1000)给出了B列中的thouse值的总和
  • SUMPRODUCT(1*(MOD(A1:A1000,3)=0))给出了A列中3*n值的个数
  • 和最后一件事: MAX(1,SUMPRODUCT(1*(MOD(A1:A1000,3)=0)))阻止你从MAX(1,SUMPRODUCT(1*(MOD(A1:A1000,3)=0))) #DIV/0! 在表单3*n A列中没有值的情况下出错

    UPD:一般情况下,对于规则11+3*n你可以使用MOD(A1:A1000-11,3)=0