2012-09-04 80 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個值的平均值。