我有一列条件和一列数据值。我可以使用excel函数来平均符合条件的数据值。但是我想要做的是,除了这个标准之外,还有一个额外的控制措施 - 只取前三(X)行的平均值满足标准。Excel AverageIF函数:只取得满足条件的前X行
这可能吗?我考虑过AverageIFS
,但我不确定如何在第二个标准中包含“计数”或“第一”或“顶部”功能。
我有一列条件和一列数据值。我可以使用excel函数来平均符合条件的数据值。但是我想要做的是,除了这个标准之外,还有一个额外的控制措施 - 只取前三(X)行的平均值满足标准。Excel AverageIF函数:只取得满足条件的前X行
这可能吗?我考虑过AverageIFS
,但我不确定如何在第二个标准中包含“计数”或“第一”或“顶部”功能。
感谢所有的想法和帮助。最后,我做了一个宏/功能来完成这项工作。 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
一些最近发布了一个问题,关于如何制作一个只包含符合标准的前三个事件的列表。我会按照他们在那篇文章中所做的来减少你的名单,然后你是否平均,如果日常工作。 –
[这是该帖子](http://stackoverflow.com/questions/36612287/excel-keep-1st-three-rows-and-delete-rest-of-duplicates/36612693#comment60822229_36612693) –