计算具有条件的中值excel

时间:2011-09-26 06:55:43

标签: excel median

我正在寻找一个excel公式,它可以帮助我计算不同数据的中位数。

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

现在,我需要计算B1:B4和B5:B8的数据中位数,并打印数字是否小于/等于/大于中位数。 我想出了初步公式

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

但是,这对于计算不同集合的中位数没有帮助。

我该怎么办?

感谢您的帮助!

2 个答案:

答案 0 :(得分: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"))

<强>更新: 根据您在下面的评论,这里是您可以在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)))

答案 1 :(得分:0)

这里有三个问题:

  1. 您的第一列是序列而不是组标识符
  2. 没有= MEDIANIF()
  3. 数据透视表不支持中位数
  4. 不是一个好的起点......

    广告#1,您可以将1,2,3,4,1,2,3, ...更改为1,1,1,1, 2,2,2, ...以表明属于哪些

    ad#2,#3 ...我建议在VBA中定义一个function = MEDIANIF();例如:

    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 col宽和x行向下使用此功能,如

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

    然后我们去...现在你可以在你的= IF(....,“g”,...)中使用新函数

    因此所有范围的单一公式....注意:冒泡排序对于大范围来说不是很经济