2016-07-10 6 views
0

В настоящее время я иметь следующую таблицуСортировка портфелей на основе критериев (TOP30%, средние 40%. И Bottom 30%)

компании --------- Дата ------- -Exchange ------- Размер

A --------------- 2000 --------- A --------- ---- 50

A --------------- 2001 --------- A ------------ 100

B --------------- 2000 --------- B ------------ 450

B-- ------- ------ 2001 --------- B ------------- 458

Я хочу выделить каждую компанию на три категории

«Вверх "==> Top 30%

"Средний" ==> Средний 40%

"Bottom" ==> Bottom 30%

Вычисление значения отсечки должны быть отфильтрованы с 'год' и«Обмен '= A

Я пробовал следующую формулу

=if([B/M]>PERCENTILEX.INC(FILTER(June,June[exchg]="A"&&EARLIER([datadate])=[datadate]),June[B/M],0.3),"L",IF([B/M]>PERCENTILEX.INC(FILTER(June,June[exchg]="A"&&EARLIER([datadate])=[datadate]),June[B/M],0.7),"M","T")) 

По некоторым причинам он не работает должным образом.

Заранее спасибо.

ответ

0

Я сведущий сделать это с функцией percentilex.inc. Вот полная формула, которую я использовал.

=SWITCH(TRUE(),Table[SIZE]<=PERCENTILEX.INC(FILTER(Table,EARLIER([Date])=[Date]),Table[SIZE],0.3),"Bottom",Table[SIZE]>=PERCENTILEX.INC(FILTER(Table,EARLIER([Date])=[Date]),Table[SIZE],0.7),"Top","Middle") 
0

Формула DAX (a.k.a. Power Pivot) PERCENTILE() доступна только в редакции Excel 2016 (см. Здесь: https://msdn.microsoft.com/en-us/library/dn802551.aspx).

Поскольку у меня нет установленной версии, я не могу дать ответ, используя предложенную формулу. Тем не менее, вы можете построить свою собственную калькуляцию процентов, используя RANKX().

Во-первых, добавить новый столбец с именем [RankInExchangeA]:

=RANKX(
    FILTER(
     Table1, 
     EARLIER([Exchange])=[Exchange] && EARLIER([year])=[year] 
    ), 
    [size] 
) 

EARLIER() функция в основном означает ThisRowsValue().

Теперь добавьте нужную Top/Bottom/Средний столбец:

= Switch(TRUE(), 
     [RankInExchange]>=CALCULATE(max([RankInExchange]),filter(Table1,EARLIER([year])=[year] && EARLIER([Exchange])=[Exchange]))*(7/10),"Bottom", 
     [RankInExchange]<CALCULATE(max([RankInExchange]),filter(Table1,EARLIER([year])=[year] && EARLIER([Exchange])=[Exchange]))*(3/10),"Top", 
     "Middle" 
    ) 

*(3/10) и *(7/10) часть формулы определяет пороги. Обратите внимание, что в примере кластеризация делаются следующим образом:

Bottom <= 30% < Middle <= 70% < Top 
+0

Благодарю вас за помощь. Я думаю, что я не сформулировал вопрос правильно, я хочу выделить все компании (компании также находятся на других биржах). Но все компании должны выделяться на основе значений отсечения, рассчитанных только компаниями в обмен на A. –

+0

Я отредактировал формулы в соответствии с требованиями. – Djeramon

+0

Я думаю, что в столбце RankInExchangeA должен быть фильтр Exchenge = A.И формула Switch должна сравниваться с размером. Я пытаюсь воспроизвести медиана с этим методом, чтобы я мог сравнивать результаты. Но еще не повезло. Для медианы I умножить на 0,5 –