我需要得到第二行到第八行非零值的平均值。也就是说,它总是会移动,这取决于非零开始于。
我想我需要的是确定以下几点:
第二非零值
之间的平均值
这有可能吗?
例如
(2)\x{e76f}\x{e76f}{##**$$}\x{e76f}\x{e76f}{#**$$}\x{e76f}\x{e76f}1|9| >E 217E 11810<代码>E 219\x{e76f}1|9|>\x{e76f}\x{e76f}}
用粗体表示的必须平均。中间的零必须被忽略。
发布于 2021-03-12 18:21:58
如果使用的是Windows Excel 2019年,则:
=AVERAGE(FILTERXML("<t><s>" &TEXTJOIN("</s><s>",TRUE,IF(row_ref<>0,row_ref,""))&"</s></t>","//s[position()>1 and position()<10]"))
TEXTJOIN
只提取那些非零(和非空白)position
函数创建一个XMLxPath
,然后提取第2至8个值(位置2到9)AVERAGE
)。
发布于 2021-03-12 13:11:38
假设您的数据如下面的示例所示,将以下公式放置在T列中并根据需要复制。
=IFERROR(AVERAGE(INDEX(22:22,AGGREGATE(15,6,COLUMN(B22:S22)/(B22:S22<>0),ROW($2:$9)))),"Less than " & rows($2:$9) & " non zero numerical entries")
B22:S22
-表示正在查看的数据行。请随意更改列参考字母以满足您的需要。只需确保公式匹配中的所有引用。
$2:$9
-表示要作为平均值的一部分使用的条目数。2是您想要使用的起始数,对应于第二个非零。9是您想要包含的最后一个数字,总共有8个数字。调整这些数字以更改要包含的数据范围。确保保留$以防止在复制公式时更改行号。
聚合像操作一样执行数组。因此,如果所查看的行过多,则可能导致系统陷入瘫痪或崩溃。此外,在聚合函数中通常应该避免全列引用,以避免过多的计算。
发布于 2021-03-12 14:09:24
我把我的答案放在A1中,以确保它在您的工作表上的任何位置都能正常工作。
假设这样的布局(从D2到T2的第一行数字):
将其粘贴到Y2 (合并)列中:
=AVERAGEIF(OFFSET(C2,0,AGGREGATE(15,3,((D2:T2)>0)/((D2:T2)>0)*COLUMN(D2:T2)-COLUMN(C2),2)):OFFSET(C2,0,AGGREGATE(15,3,((D2:T2)>0)/((D2:T2)>0)*COLUMN(D2:T2)-COLUMN(C2),8)),">0")
然后复制到其他行。
我使用的数据:
1 2 0 6 4 9 0 7 3 7 1 1 1 2 6 9 7
0 0 7 0 1 1 4 4 1 5 8 3 5 6 4 6 4
1 7 2 8 0 6 4 9 9 7 8 4 6 9 4 2 9
0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0
8 7 8 4 10 0 2 2 10 4 4 8 3 3 0 4 10
在这个公式中,C2是数字行开始之前的单元格(空或非),不包括在要计数的数字中。
https://stackoverflow.com/questions/66599574
复制相似问题