Excel AverageIF: среднее число первых X ячеек заданного типа - PullRequest
0 голосов
/ 07 мая 2019

У меня есть список информации об объектах для жилого комплекса, включая типы объектов, арендную плату и даты переезда.Я пытаюсь выяснить, как рассчитать среднюю арендную плату за последние 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 долл. США (первые 3 из 12 средних значений 1x1 1 039 долл. США)
  • 2x2clr = 1 222,50 долл. США (первые 2 из 8 средних значений 2x2 1 222,50 долл. США)

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Итак, вот моя попытка:

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 Ввод

Шаги:

1) Сначала нам нужно узнать количество ходов, которые составляют 25% от общего количества этого типа: =ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)

2) Далее нам нужно узнать, через что проходит это n-е наибольшее значение: {=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)}
0 голосов
/ 07 мая 2019

Будут некоторые умные куки, которые могут сделать это без вспомогательного столбца, но, к сожалению, этот умный куки - это не я.

Если предоставленные вами данные начинаются с ячейки 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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...