2011-09-26 164 views
0

我在找一個excel公式,這將幫助我計算不同數據的中位數。計算有條件的中位數excel

1 45 
2 54 
3 26 
4 12 
1 34 
2 23 
3 9 

現在,我需要從B1計算數據的中值:B4,然後B5:B8,和打印數是否大於該中值較小的/等於/大於.. I」已經提出初步公式

=IF(MEDIAN($B$1:$B$4)<B1;"g";IF(MEDIAN($B$1:$B$4)=B1;"e";"l")) 

但是,這不會幫助計算不同集合的中位數。

我該怎麼辦?

感謝您的幫助!

回答

0

要檢查是否B1大於,小於或等於B1兩者的中位數的中位數:B4和B5:B8(在這種情況下將29.25),那麼你可以使用這樣的事情:

=IF(B1>(MEDIAN(MEDIAN(B1:B4),MEDIAN(B5:B7))),"g",IF(B1=(MEDIAN(MEDIAN(B1:B4),MEDIAN(B5:B7))),"e","l")) 

如果你只是要檢查對B1:B4(如你的例子),你可以使用:

=IF(B1>MEDIAN(B1:B4),"g",IF(B1=MEDIAN(B1:B4),"e","l")) 

UPDATE: 根據下面的評論,這裏就是你可以在C1寫並向下拖動到C4:

=IF(B1>MEDIAN($B$1:$B$4),B1&">"&MEDIAN($B$1:$B$4),IF(B1=MEDIAN($B$1:$B$4),B1&"="&MEDIAN($B$1:$B$4),B1&"<"&MEDIAN($B$1:$B$4))) 
+0

嗨很經濟!我想爲B1:B4和B5:B7計算單獨的方法,然後爲每一行計算每個g,e,l ......即,對於B1:B4,B5:B7分別爲35.5, 23。對於B1行,它應該打印45> 35.5(即g),而對於B5,它應打印34> 23。g) – user898727

+0

新增了一個例子,說明如何爲B1:B4做到這一點,這應該給你一個開始並展示如何寫出來(它很長很醜)。 – aevanko

+0

謝謝!這不完全是我想要的..但​​是,我得到的提示... – user898727

0

你這裏有三個問題:

  1. 你的第一列是一個序列,而不是一組標識符
  2. 沒有= MEDIANIF()
  3. 數據透視表不支持的中位數無論是

不是一個很好的起點....

廣告#1,你可以改變你對1,2,3,4,1,2,3, ...1,1,1,1, 2,2,2, ...指出哪些屬於共同

廣告#2,#3 ......我建議定義一個函數= MEDIANIF()在VBA;例如:

Function MedianIf(R As Range, Cr As Variant) As Variant 
Dim Idx As Integer, Jdx As Integer, A() As Variant, CCnt As Integer, Tmp As Variant 

    ' find array size 
    CCnt = 0 
    For Idx = 1 To R.Rows.Count 
     If R(Idx, 1) = Cr Then CCnt = CCnt + 1 
    Next Idx 

    'dim array 
    ReDim A(CCnt - 1) 

    ' load from range into array 
    CCnt = 0 
    For Idx = 1 To R.Rows.Count 
     If R(Idx, 1) = Cr Then 
      A(CCnt) = R(Idx, 2) 
      CCnt = CCnt + 1 
     End If 
    Next Idx 

    ' bubble sort 
    For Jdx = CCnt - 1 To 0 Step -1 
     For Idx = 0 To Jdx - 1 
      If A(Idx) > A(Idx + 1) Then 
       Tmp = A(Idx) 
       A(Idx) = A(Idx + 1) 
       A(Idx + 1) = Tmp 
      End If 
     Next Idx 
    Next Jdx 

    ' get Median 
    If CCnt Mod 2 = 1 Then 
     MedianIf = A(Int(CCnt/2)) 
    Else 
     MedianIf = (A(CCnt/2 - 1) + A(CCnt/2))/2 
    End If 

End Function 

使用此功能可通過選擇範圍2山坳的寬x行了,像

=MedianIF($A$1:$B$7,A1) 

而且我們去...現在你可以使用新的功能,在你= IF (...,「G」,...)

所以對於所有的範圍內一個單一的公式....注意:冒泡排序是不適合大範圍

+0

絕對沒有意圖的進攻,但更多的描述性變量名稱可以真正幫助你的代碼變得更具可讀性。 – aevanko

+0

True ....它快速&骯髒....但誰能幫助快速幫助加倍;-) ....我從我的一個庫中拿到它,並在添加條件數組加載和快速測試後才粘貼它。稍後會進行美化 – MikeD