从Excel中的函数返回单元格作为变量

时间:2012-09-04 21:51:27

标签: excel excel-formula

我的女朋友需要用Excel公式做一些相当复杂的事情,而我却找不到她的答案。

她希望找到一系列单元格的MIN,然后,在识别出该单元格后,使用其右侧和左侧的5个值来计算所有这些值的平均值。

这可能吗?

3 个答案:

答案 0 :(得分:1)

我有一个公式,可以做你在问题中概述的内容。

假设我们正在寻找列的最小值(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进行处理,然后使用match来查找行号,然后使用offset来选择右侧的5个单元格(和重复的第二个偏移,并向左反转同样的事情)。最后,这两个范围都用作average公式的输入。

答案 1 :(得分:1)

对于任何单列或单行(需要找到MIN值),您可以使用此公式

=(SUM(OFFSET(INDEX(Range,MATCH(MIN(Range),Range,0)),0,-5,1,11))-MIN(Range))/10

Range是单列/行

这会从平均值中排除MIN值,并且应该假设任何一侧总共有5个单元格(例如MIN不能在A列到E列中)

答案 2 :(得分:0)

由于你的女朋友,我只回答这个问题。

说你有以下

enter image description here

列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个值的平均值。