Как создать динамическую формулу, чтобы найти среднее из набора значений для данного вектора - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь создать формулу, которая дает мне среднее значение за последние 12 записей в данном наборе данных в зависимости от связанного вектора.

Давайте сделаем пример:

У меня в столбцах F2, G2, H2 и I2 указаны даты Company1, Company2 и Company3 соответственно. Затем из строки 3 в строку 33 у меня есть месячные даты, начиная с мая 2016 года.

Date    Company1          Company2       Company3
May-16                   2,453,845  
Jun-16                   13,099,823     
Jul-16                   14,159,037     
Aug-16   38,589,050      8,866,101  
Sep-16   63,290,285      13,242,522     
Oct-16   94,005,364      14,841,793     
Nov-16   123,774,792     7,903,600      41,489,883 
Dec-16   93,355,037      12,449,604     69,117,105 
Jan-17   47,869,982      13,830,712     83,913,764 
Feb-17   77,109,905      10,361,555     68,176,643

Цель состоит в том, чтобы создать формулу, которая при перетаскивании вниз правильно вычисляет среднее значение из последних 12 значений для данной компании.

Так, например, я бы сказал, скажем, в таблице "B2: C5":

Company1     76,856,345 
Company2     11,120,859 
Company3     65,674,349 
И, если новая Company4 добавлена ​​в список, то мне просто нужно перетащить ее вниз по формуле, чтобы вычислить среднее значение за последние 12 месяцев для Company4.

До сих пор я придумал эту формулу:

=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(G:G),ROW(G:G)),ROW(INDIRECT("1:"&MIN(12,COUNT(G:G))))),ROW(G:G),G:G ))

Эта формула правильно вычисляет среднее значение для данного столбца, учитывая только последние 12 значений. Последним шагом будет создание формулы, которая включает все столбцы, а затем вычисление среднего значения для данной компании.

Спасибо!

1 Ответ

0 голосов
/ 09 января 2019

Я рекомендую использовать именованный диапазон для определения данных в столбцах G: I. Когда компания добавляется, просто измените спецификации именованного диапазона. Я использовал имя Target . Конечно, вы можете заменить его на $ G: $ I, если вы чувствуете такую ​​склонность, но я бы порекомендовал уменьшить количество строк в диапазоне, которым легче управлять, когда он назван. Используйте формулу ниже, чтобы извлечь названия компаний из первой строки Target в первый столбец вашей таблицы средних значений. Это необходимо для того, чтобы имена были написаны одинаково в обоих местах.

=INDEX(Target,1,ROW()-2)

Число 2 указывает количество строк над строкой, содержащей формулу. это скопировано здесь из ячейки M3. Там ROW () - 2 создает число 1, считая последовательно, как формула копируется вниз. Теперь у меня есть формула ниже в моей ячейке N3 и скопировано вниз.

=SUM(INDEX(Target,0,MATCH($M3,INDEX(Target,1,0),0)))

Формула просто суммирует столбцы G, H и I в 3 последовательных строках. На последнем шаге я вставил определение диапазона, установленное выше, то есть исключая функцию SUM (), в существующую формулу.

=AVERAGE(LOOKUP(LARGE(IF(ISNUMBER(INDEX(Target,0,MATCH($M3,INDEX(Target,1,0),0))),ROW(INDEX(Target,0,MATCH($M3,INDEX(Target,1,0),0)))),ROW(INDIRECT("1:"&MIN(12,COUNT(INDEX(Target,0,MATCH($M3,INDEX(Target,1,0),0))))))),ROW(INDEX(Target,0,MATCH($M3,INDEX(Target,1,0),0))),INDEX(Target,0,MATCH($M3,INDEX(Target,1,0),0))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...