Excel 中的多项平均数

Excel 中的多项平均数

我有一张包含很多行的 Excel 数据表,看起来像

C1    C2    Value
---   ---   -----
 A     C    0.228
 B     D    0.234
 A     D    0.359
 A     C    0.125
...

Value我想找到=和=C1的平均值,最好的方法是什么?我知道and和函数,但它们似乎不适用于多个条件...AC2DAVERAGEIFCOUNTIFSUMIF

答案1

在 Excel 2007 及更高版本中,您可以使用 AVERAGEIFS 函数,如下所示:

=AVERAGEIFS(C2:C5, A2:A5, "A", B2:B5, "D")

答案2

您始终可以使用内置 VBA 语言。我刚刚尝试过,效果不错 - YMMV。

转到工具 | 宏 | Visual Basic 编辑器。

将打开一个新窗口。

转到工具 | 参考资料。单击选择 Microsoft ActiveX 数据对象 2.5 库旁边的复选框。单击确定。

双击左侧列表中的 Sheet1。(项目资源管理器)- 您的工作表可能有不同的名称。

将以下代码复制并粘贴到代码窗口(顶部有两个下拉列表的窗口)中

请参阅下面突出显示的行 - 编辑它以确保您定义了 Excel 工作簿的完整路径。即:

sXLSFile = "s:\brad\book1.xls"

单击运行菜单,然后单击运行子程序/用户窗体 (F5) 选项。

在所有条件相同的情况下(!),您应该会看到一个弹出消息框,其中显示所选行的平均值 - 请参阅下面实际运行查询的第二行突出显示的内容。

.Open "**select avg(value) from [sheet1$] where c1='A' and c2='D'**"

您只需更改上面的行即可更改查询 - 例如如果您想要 C1 =“B”和 C2 =“A”的平均值

Sub Main()

    Dim sXLSFile As String
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset

    ' set the location of the Excel worksheet
    **sXLSFile = "s:\brad\book1.xls"**
    Set cn = New ADODB.Connection
    With cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & sXLSFile & ";Extended Properties=Excel 8.0;"
        .Open
    End With

    If Not cn Is Nothing Then
        Set rs = New ADODB.Recordset
        With rs
            Set .ActiveConnection = cn
            .Open "**select avg(value) from [sheet1$] where c1='A' and c2='D'**"
            MsgBox "The average is: " & rs(0)
        End With

    End If

    If Not rs Is Nothing Then
        If rs.State = adStateOpen Then
            rs.Close
        End If
    End If
    Set rs = Nothing

    If Not cn Is Nothing Then
        If cn.State = adStateOpen Then
            cn.Close
        End If
    End If
    Set cn = Nothing

End Sub

希望有帮助!

参考: http://support.microsoft.com/kb/257819

相关内容