2016-07-07 57 views
0
排序組合

我現在的表看起來像這樣基於指標分析

公司-----年----尺寸大小-----交易所

一個--------- --2000 ----- 80 ------- A

A ----------- 2001 ----- 85 ------- A

B ----------- 2002 ------ 90 ------ C

我想將公司分爲「大」和「小」兩個類別。

對於特定的一年,如果公司規模大於當年在Exchange A中的公司規模的中位數,將被稱爲「BIG」。 這樣的事情,

=如果([大小]> MEDIANX(過濾器(過濾器(TBL1,[年] = A),[年]),[大小]), 「大」, 「小」)

我知道我使用過濾器的方式是錯誤的。我不知道該怎麼做。請幫幫我。

回答

0

你的問題不是特別好措辭,因爲它讓我想知道在回答時是否做出了正確的假設,但基本上我認爲你需要類似於具有中值的數組公式。

=IF(C2>MEDIAN(IF($D$2:$D$5="A",IF($B$2:$B$5=B2,$C$2:$C$5))),"Big","Small") 

這應該給你的「大」,如果該年度的公司規模比公司當年的大小在Exchange A.位數越大

+0

謝謝您的回答,我爲我的措辭差遺憾。你理解正確,但不幸的是,你提供的公式似乎並沒有給我正確的答案。 –

+0

是的,剛剛檢查過,你是對的,奇怪的是與中位數和數組發生了什麼,如果我將它改爲SUM然後它工作正常,你可能不得不看看是否有其他人可以找出原因。我剛剛搜索了它,它似乎與其他人所做的一樣,例如, [這裏](http://spreadsheets.about.com/od/2010statisticalfunctions/qt/20​​10-04-30-excel-2010-median-function.htm)。 –

0

我想你問一個的PowerPivot解決方案,因爲你的問題被標記爲這樣。

DAX(又名Power Pivot)公式MEDIAN()僅適用於Excel 2016的預覽版(請參閱此處:https://msdn.microsoft.com/en-us/library/dn802551.aspx)。

但是,你可以簡單地建立使用RANKX()

首先你自己的中位數邏輯,添加一個名爲[RankInExchangeA]新列:

=If([Exchange]="A",RANKX(FILTER(Table1,[Exchange]="A" && EARLIER([year])=[year]),[size]),Blank()) 

EARLIER()功能基本上意味着ThisRowsValue()

現在添加您需要的大/小柱:

=If([Exchange]="A",If([RankInExchangeA]<=CALCULATE(max([RankInExchangeA]),filter(Table1,EARLIER([year])=[year]))/2,"Small","Big"),"Other Exchange") 

編輯:新增年條件的公式。

編輯2:正如在評論中提到,下面的公式將工作用MEDIANX()

=IF([size]>MEDIANX(FILTER(Table,[Exchange]="A"&&EARLIER([date])=[date]),[size]),‌​"Big","Small") 
+0

是的,我要求一個Powerpivot解決方案。我使用的是Excel 2016,它有median()和medianx()函數。在你的公式中,我認爲,你沒有考慮年份過濾器。 –

+0

你是對的。我在答案中添加了年份條件。我也會嘗試使用Median()提供解決方案,但由於我沒有Excel 2016可用,因此無法測試公式。 – Djeramon

+0

@Djeeramon非常感謝。如果我想按照相同標準(Exchange A和Year)將它們分配到三個組(前30%,中40%和下30%),我如何編輯您提供的解決方案? –