excel:创建两个范围的平均值数组

x3naxklr  于 2023-05-19  发布在  其他
关注(0)|答案(5)|浏览(192)

我需要两个计算两个Excel范围的平均值的平均值。缺少某些值。
例如:
一、二
二,二
三、零
2,不适用
所得平均值为:
1.5
2
1.5
2
总平均值应该是1.75
有没有一种方法可以在一个公式中做到这一点,没有任何辅助单元格

edit-重要提示:

这两个范围在实际工作簿中不相邻。
这应该在Excel 2019上运行。没有新功能…

smdncfj3

smdncfj31#

对于非365版本的Excel:

=AVERAGE(SUBTOTAL(1,OFFSET(A1:B1,ROW(A1:B4)-MIN(ROW(A1:B4)),)))

如果列 * 不相邻 *(假设A1:A4C1: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}
可能需要修改。

mzsu5hc0

mzsu5hc02#

非常难看,但它应该在这个特定的情况下完成工作,我认为它适合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),""))

结果:

y1aodyip

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)),""))
k4aesqcs

k4aesqcs4#

您可以尝试使用MAP()

·单元格D7中使用的公式

=LET(x,MAP(A7:A10,B7:B10,LAMBDA(x,y,AVERAGE(x,y))),VSTACK(x,AVERAGE(x)))
ua4mk5z4

ua4mk5z45#

使用BYROW()作为每行的平均值。然后使用AVERAGE()函数进行最终平均。你试试-

=AVERAGE(BYROW(A1:B4,LAMBDA(x,AVERAGE(x))))

对于不相邻的列,你可以尝试-

=AVERAGE(MAP(A1:A4,D8:D11,LAMBDA(a,b,AVERAGE(a,b))))

相关问题