我的女朋友需要用 Excel 公式做一些相当复杂的事情,我无法为她找到答案。
她想找到一系列单元格的最小值,然后在识别出该单元格后,使用其右侧和左侧的 5 个值来计算所有这些值的平均值。
这可能吗?
我的女朋友需要用 Excel 公式做一些相当复杂的事情,我无法为她找到答案。
她想找到一系列单元格的最小值,然后在识别出该单元格后,使用其右侧和左侧的 5 个值来计算所有这些值的平均值。
这可能吗?
我有一个公式可以完成您在问题中概述的内容。
假设我们正在寻找列的最小值 (F:F),则以下工作:
=AVERAGE(OFFSET($F1,MATCH(MIN($F:$F),$F:$F,FALSE)-1,1,1,5),OFFSET($F1,MATCH(MIN($F:$F),$F:$F,FALSE)-1,-1,1,-5))
字母 F 可以在您要使用的任何列的公式中替换。
它的工作原理是它找到Min
列的 fins ,然后使用它match
来查找行号,然后offset
s 选择右侧的 5 个单元格(以及第二个重复的偏移量,并在左侧反转执行相同的操作)。最后,这两个范围都用作average
公式的输入。
对于任何单列或单行(需要找到 MIN 值),您可以使用此公式
=(SUM(OFFSET(INDEX(Range,MATCH(MIN(Range),Range,0)),0,-5,1,11))-MIN(Range))/10
其中 Range 是单列/行
这从平均值中排除了 MIN 值,并且假设两边总是有 5 个单元格应该可以工作(例如,MIN 不能在 A 到 E 列中)
我只是因为你的女朋友才回答这个问题。
说你有以下
F 列是您要评估最小值的列。
在这种情况下,F6 是最小值。您将使用以下代码创建一个宏:
Sub test()
Dim val1 As String
Dim val2 As Long
val1 = WorksheetFunction.min(Range("f1:f10"))
For x = 1 To 10
If Range("f" & x).Value = val1 Then
val2 = WorksheetFunction.Average(Range("a" & x & ":k" & x))
Range("m1").Value = val2
Else
End If
Next x
End Sub
宏将在 F 列中找到最小值,然后返回单元格 M1 中行中 11 个值的平均值。