Excel 找到具有额外条件的范围的顶部和底部n%的平均值
例如:Excel 找到具有额外条件的范围的顶部和底部n%的平均值,excel,excel-formula,excel-udf,vba,Excel,Excel Formula,Excel Udf,Vba,例如: Part, Qty Book, 1 Book, 2 Book, 3 Book, 4 Book, 5 Book, 6 Book, 7 Book, 8 Book, 9 Book, 10 Pen, 4 Pen, 7 我正在计算B:B范围内前10%的平均图书数量。 已尝试使其使用基于以下内容的数组公式: {=AVERAGE(IF(B:B>PERCENTILE(B:B,0.9),B:B))} 当我尝试使用数组公式时,我意识到我有很多
Part, Qty
Book, 1
Book, 2
Book, 3
Book, 4
Book, 5
Book, 6
Book, 7
Book, 8
Book, 9
Book, 10
Pen, 4
Pen, 7
我正在计算B:B范围内前10%的平均图书数量。已尝试使其使用基于以下内容的数组公式:
{=AVERAGE(IF(B:B>PERCENTILE(B:B,0.9),B:B))}
当我尝试使用数组公式时,我意识到我有很多数据,当添加新数据时,计算会花费很多时间
这可以通过VBA中的用户定义函数来实现以加快速度吗?要隔离B列中与已排序零件上的“book”相关的值,您可以引用B列中的单元格,如下所示:
INDEX(B:B, MATCH("book", A:A, 0):INDEX(B:B, MATCH("book", A:A)
B2:INDEX(B:B, MATCH("zzz", A:A)
要分离B列中与未排序的零件数据中的任何零件相关的值,您可以引用B列中的单元格,如下所示:
INDEX(B:B, MATCH("book", A:A, 0):INDEX(B:B, MATCH("book", A:A)
B2:INDEX(B:B, MATCH("zzz", A:A)
这些范围将在添加新值时动态更新,但第一个范围仅在重新使用A列中的值后才准确
排序的标准公式
在下图中,E4:F4中的标准公式为:
=PERCENTILE(INDEX(B:B, MATCH(D4,A:A, 0)):INDEX(B:B, MATCH(D4,A:A )), 0.9)
=AVERAGEIF(INDEX(B:B, MATCH(D4,A:A, 0)):INDEX(B:B, MATCH(D4,A:A )), ">"&PERCENTILE(INDEX(B:B, MATCH(D4,A:A, 0)):INDEX(B:B, MATCH(D4,A:A )), 0.9))
'alternate standard formula for F4
=AVERAGEIF(INDEX(B:B, MATCH(D4,A:A, 0)):INDEX(B:B, MATCH(D4,A:A )), ">"&E4)
根据需要填写
分拣机上的标准公式 未排序的数组ª公式 在下图中,E10:F10中的阵列公式为:
=PERCENTILE(IF(A$2:INDEX(A:A, MATCH("zzz",A:A ))=D10, B$2:INDEX(B:B, MATCH("zzz",A:A ))), 0.9)
=AVERAGEIFS(B:B,A:A, D10,B:B, ">"&PERCENTILE(IF(A$2:INDEX(A:A, MATCH("zzz",A:A ))=D10, B$2:INDEX(B:B, MATCH("zzz",A:A ))), 0.9))
'alternate standard formula for F10
=AVERAGEIFS(B:B,A:A, D10,B:B, ">"&E10)
未排序上的数组公式
imk_数组公式需要使用Ctrl+Shift+Enter完成↵. 正确输入第一个单元格后,可以像任何其他公式一样填充或向下或向右复制它们。尝试将整列引用减少到更接近实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将参考范围缩小到最小值。有关更多信息,请参阅。您是否使用[Ctrl]+[Shift]+[Enter]而不是简单的[Enter]来完成此操作?这是一个数组公式。也许这个标准公式会更好
=AVERAGEIF(B:B,“>”&百分位数(B:B,0.9))
。是的,我正在用Ctrl+Shift+Enter完成。我怎样才能使用你的公式,只找到一种零件类型的值而不使用数组?那么,=AVERAGEIFS(B:B,A:A,“book”,B:B,“>”&百分位数(B:B,0.9))
这将是一种简单的方法,但它使用了B整列的百分位数,而不仅仅是B账面价值的百分位数。你说的是多少行,A列是按一定的顺序排列的,所以各部分总是在一起的?现在大约有2500行,有30个不同的“部分”。不幸的是,它们没有被排序。如果它们没有被排序,那么您需要一个引用数据完整范围的数组公式;没有完整列引用那么糟糕,但并不理想。如果对它们进行了排序,那么您可以选择第一本“书”和最后一本“书”的行号,并最小化标准公式计算。