我需要两个计算两个Excel范围的平均值的平均值。缺少某些值。例如:一、二二,二三、零2,不适用所得平均值为:1.521.52总平均值应该是1.75有没有一种方法可以在一个公式中做到这一点,没有任何辅助单元格?
edit-重要提示:
这两个范围在实际工作簿中不相邻。这应该在Excel 2019上运行。没有新功能…
smdncfj31#
对于非365版本的Excel:
=AVERAGE(SUBTOTAL(1,OFFSET(A1:B1,ROW(A1:B4)-MIN(ROW(A1:B4)),)))
如果列 * 不相邻 *(假设A1:A4和C1:C4):
A1:A4
C1:C4
=AVERAGE( MMULT( CHOOSE( {1, 2}, IF(ISNUMBER(A1:A4), A1:A4, C1:C4), IF(ISNUMBER(C1:C4), C1:C4, A1:A4) ), {1; 1} ) / 2 )
请注意,如果您使用的不是英文版本的Excel,则常量中的分隔符{1, 2}和{1; 1}可能需要修改。
{1, 2}
{1; 1}
mzsu5hc02#
非常难看,但它应该在这个特定的情况下完成工作,我认为它适合Excel-2019:如果每行只能有一个#N/A错误:
Excel-2019
#N/A
=AVERAGE(IFNA(A1:A4,B1:B4),IFNA(B1:B4,A1:A4))
如果每行的两个值都可以是#N/A:
=AVERAGE(IFNA(IFNA(A7:A11,B7:B11),""),IFNA(IFNA(B7:B11,A7:A11),""))
如果不是实际的#N/A错误,而是文本:
=AVERAGE(IFNA(IF(ISNUMBER(A14:A19),A14:A19,B14:B19),""),IFNA(IF(ISNUMBER(B14:B19),B14:B19,A14:A19),""))
结果:
y1aodyip3#
如果是真的#N/A,您可能需要使用Aggregate:
=AVERAGE(BYROW(A1:B4,LAMBDA(rw,AGGREGATE(1,6,rw))))
也许吧
=AVERAGE(BYROW(A1:B5,LAMBDA(rw,IFERROR(AGGREGATE(1,6,rw),""))))
在同一行有两个NA的情况下。@user11222393对Excel 2019的回答的变体:
=AVERAGE(IFERROR((IF(ISNUMBER(A1:A5),A1:A5,0)+IF(ISNUMBER(B1:B5),B1:B5,0))/(ISNUMBER(A1:A5)+ISNUMBER(B1:B5)),""))
k4aesqcs4#
您可以尝试使用MAP()
MAP()
·单元格D7中使用的公式
D7
=LET(x,MAP(A7:A10,B7:B10,LAMBDA(x,y,AVERAGE(x,y))),VSTACK(x,AVERAGE(x)))
ua4mk5z45#
使用BYROW()作为每行的平均值。然后使用AVERAGE()函数进行最终平均。你试试-
BYROW()
AVERAGE()
=AVERAGE(BYROW(A1:B4,LAMBDA(x,AVERAGE(x))))
对于不相邻的列,你可以尝试-
=AVERAGE(MAP(A1:A4,D8:D11,LAMBDA(a,b,AVERAGE(a,b))))
5条答案
按热度按时间smdncfj31#
对于非365版本的Excel:
如果列 * 不相邻 *(假设
A1:A4
和C1:C4
):请注意,如果您使用的不是英文版本的Excel,则常量中的分隔符
{1, 2}
和
{1; 1}
可能需要修改。
mzsu5hc02#
非常难看,但它应该在这个特定的情况下完成工作,我认为它适合
Excel-2019
:如果每行只能有一个
#N/A
错误:如果每行的两个值都可以是#N/A:
如果不是实际的
#N/A
错误,而是文本:结果:
y1aodyip3#
如果是真的#N/A,您可能需要使用Aggregate:
也许吧
在同一行有两个NA的情况下。
@user11222393对Excel 2019的回答的变体:
k4aesqcs4#
您可以尝试使用
MAP()
·单元格
D7
中使用的公式ua4mk5z45#
使用
BYROW()
作为每行的平均值。然后使用AVERAGE()
函数进行最终平均。你试试-对于不相邻的列,你可以尝试-