2012-09-04 76 views
1

我的女朋友需要做一些与Excel公式相当复杂的事情,我一直无法为她找到答案。从Excel中的函数返回单元格作为变量

她希望找到一个细胞范围的最小值,然后,在识别该细胞后,使用其右侧和左侧的5个值来计算所有这些值的平均值。

这可能吗?

+0

如果没有任何限制,可以使用VBA来实现。 –

+0

你需要MIN的单元格的范围是什么形状?它是一个单列还是一行......还是一个矩阵(多列/多行)? –

回答

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 S选择5个细胞的权利(和第二偏移重复和做同样的事情反转到左侧)。最后,这两个范围均用作average公式的输入。

1

对于任何单个列或单列(其中MIN值需要被找到),则可以使用此公式

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

在哪里范围是单个列/行

这不包括MIN价值从平均值,应该工作假设总是有5个单元格任何一方(例如MIN不能在列A到E)

+0

也是一个很好的答案,我没有想到将平均分为两步,就像这样排除查找列的值。 (所以我使用了两个偏移的平均值) – danielpiestrak

+0

Thanks Gimp - 即使范围是连续的,也可以工作。它适用于F2:F100或F2:Z2 –

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