【问题标题】:Excel AverageIF function: Taking only first X rows meeting the criteriaExcel AverageIF 函数:仅取满足条件的前 X 行
【发布时间】:2016-04-18 01:00:15
【问题描述】:

我有一列标准和一列数据值。我可以使用AverageIF excel 函数来平均满足条件的数据值。但我想要做的是,除了这个标准之外,还有一个额外的控制 - 只取符合标准的前 3 (X) 行的平均值。

这可能吗?我考虑过AverageIFS,但我不确定如何在第二个条件中包含“计数”或“第一”或“顶部”函数。

【问题讨论】:

  • 最近有人发布了一个关于如何制作一个仅包含前三个匹配条件的列表的问题。我会按照他们在那篇帖子中所做的事情来减少您的列表,然后您是否会按常规进行平均。

标签: excel average


【解决方案1】:

试试这个数组公式:

=AVERAGE(IF(ROW($A$2:$A$20)=SMALL(IF($A$2:$A$20=1,ROW($A$2:$A$20)),{1,2,3}),$B$2:$B$20))

作为数组公式,需要用 Ctrl-Shift-Enter 确认。如果正确完成,excel 将在公式周围加上{}

{1,2,3} 表示从上到下的前三个。它可以更改为每个人想要的,例如前 4 个 {1,2,3,4}

我在这部分使用1 的标准$A$2:$A$20=1 将1 更改为您想要的任何内容。如果您想将条件放在单元格中,也可以使用单元格引用。

【讨论】:

    【解决方案2】:

    感谢大家的想法和帮助。最后我做了一个宏/函数来完成这项工作。 r 是要在其中查找 match 的范围,count 确定要平均多少匹配结果(取自范围 averagerange)。 Ascending 参数尚未实现,但允许选择匹配值的方向(即第一个/顶部 X,或最后/底部 X)。 match 被过度简化,因为它只能找到相等的值(不是 <>!= 等)。如果count大于匹配数,则返回匹配值的平均值。

    Public Function PF_AverageIF(r As range, match As Variant, averagerange As range, count As Long, Ascending As Boolean) As Double
        'Debug.Print ("PF_AverageIF called")
        'Debug.Print ("range = " & r.Address)
        'Debug.Print ("criteria = " & criteria)
        'Debug.Print ("averagerange = " & averagerange.Address)
    
        Dim i As Long
        Dim total As Double                 
    
        For Row = 1 To r.Rows.count
            'Debug.Print ("=>" & r(Row, 1))
            If (r(Row, 1).Value = match) Then
                'Debug.Print ("........" & averagerange(Row, 1))
                'Debug.Print ("^^^^")
                total = total + averagerange(Row, 1)
                i = i + 1
                If (count > 0) And (i = count) Then
                    Exit For
                End If
            End If
        Next Row
    
        PF_AverageIF = total / i
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 2018-09-19
      • 2015-05-14
      • 2011-12-28
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多