Excel AverageIF:平均给定类型的前X个单元格

时间:2019-05-07 01:55:48

标签: excel excel-formula

我有一个公寓大楼的单元信息列表,包括单元类型,租金和入住日期。我试图弄清楚如何计算每种单元类型最近25%入住的平均租金(即120个总计1x1,因此试图计算最近30个租约的平均值)。我正在尝试提出一个可应用于所有不同单位类型的变量公式。

Unit    Type    Actual  Move In
268    1x1cr    1049    4/13/2019
171    1x1cr    1019    4/12/2019
251    1x1cr    1049    3/23/2019
292    2x2clr   1235    3/22/2019
107    1x1cr    1019    3/15/2019
225    2x2clr   1210    3/15/2019
262    1x1cr    1019    3/14/2019
224    2x2clr   1235    3/10/2019
392    2x2clr   1335    3/1/2019
271    1x1cr    1069    2/23/2019
182    1x1cr    1019    2/22/2019
155    1x1cr    1019    2/21/2019
226    2x2clr   1315    2/14/2019
385    2x2clr   1215    2/11/2019
116    1x1cr    1019    2/9/2019
189    2x2clr   1365    2/6/2019
148    1x1cr    1019    2/1/2019
150    1x1cr    1019    2/1/2019
176    1x1cr    1019    1/31/2019
130    2x2clr   1215    1/29/2019

对于上面的示例,结果将是:

  • 1x1cr = $ 1,039(12个1x1的平均值中的前三个$ 1,039)
  • 2x2clr = $ 1,222.50(8 2x2的平均值中的前2个是$ 1,222.50)

2 个答案:

答案 0 :(得分:0)

会有一些智能cookie可以在没有帮助列的情况下执行此操作,但是不幸的是,智能cookie不是我。

如果您提供的数据从单元格 A1 开始,则将以下公式添加到单元格 E2 并填写...

=B2 & "_" & COUNTIF($B$1:B2,B2)

在单元格G2中添加要平均的单位... 1x1cr

现在,我添加了一些工作单元,以便您可以看到它的形成...

单元格H2 = Percentage

单元格H3 = Count

单元格H4 = To Count

单元格H5 = To Row

单元格H6 = Average

...现在添加工作公式...

单元格I2 = 25%

单元格I3 = =COUNTIF(B1:B21,G2)

单元格I4 = =ROUNDUP(I3*I2,0)

单元格I5 = =MATCH(G2 & "_" & I4,E1:E21,0)

...这是货币公式...

单元格I6 = =AVERAGEIF(INDIRECT("B1:B"&I5),G2,INDIRECT("C1:C"&I5))

...当然,您可以自己做得更好,但这可以向您展示我的工作方式。

要注意的一件事是,如果25%导致单元格数不舍入,它会四舍五入,但是您可以更改它。

enter image description here

我希望有帮助。

答案 1 :(得分:0)

这是我的尝试:

enter image description here

G2中的公式:

{=AVERAGEIFS($C$2:$C$21,$B$2:$B$21,F2,$D$2:$D$21,">="&LARGE(IF($B$2:$B$21=F2,$D$2:$D$21),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)))}

请注意,这是通过 Ctrl Shift Enter

输入的数组公式

步骤:

1)首先,我们需要通过=ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)

知道进入该类型活动总数的25%的活动量

2)接下来,我们需要通过{=LARGE(IF($B$2:$B$21=F2,$D$2:$D$21),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0))}

知道第n个最大值是什么。

3)现在我们有了标记,并可以通过合并的>=公式获得比该标记AVERAGEIFS()更高的所有值。

请注意,在这种情况下(具有所有不同的日期),它将可以正常工作,但是第n个最大的日期可以相同时可能会出现问题,因为>=会在计算中捕获多个匹配。希望有道理:S

在这种情况下,您应该尝试:

{=SUMPRODUCT(($B$2:$B$21=F2)*(ROW($B$2:$B$21)<=SMALL(IF($B$2:$B$21=F2,ROW($B$2:$B$21)-MIN(ROW($B$2:$B$21))+2),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)))*($C$2:$C$21))/ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)}