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