我有一个公寓大楼的单元信息列表,包括单元类型,租金和入住日期。我试图弄清楚如何计算每种单元类型最近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
对于上面的示例,结果将是:
答案 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%导致单元格数不舍入,它会四舍五入,但是您可以更改它。
我希望有帮助。
答案 1 :(得分:0)
这是我的尝试:
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)
2)接下来,我们需要通过{=LARGE(IF($B$2:$B$21=F2,$D$2:$D$21),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0))}
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)}