私のガールフレンドは、Excel の数式を使ってかなり複雑なことをする必要がありますが、私は彼女に対する答えを見つけることができませんでした。
彼女は、ある範囲のセルの MIN を見つけたいと考えています。次に、そのセルを特定したら、左右の 5 つの値を使用して、これらすべての値の平均を計算します。
これは可能ですか?
私のガールフレンドは、Excel の数式を使ってかなり複雑なことをする必要がありますが、私は彼女に対する答えを見つけることができませんでした。
彼女は、ある範囲のセルの MIN を見つけたいと考えています。次に、そのセルを特定したら、左右の 5 つの値を使用して、これらすべての値の平均を計算します。
これは可能ですか?
単一の列または単一の行 (MIN 値を見つける必要がある場所) には、この式を使用できます。
=(SUM(OFFSET(INDEX(Range,MATCH(MIN(Range),Range,0)),0,-5,1,11))-MIN(Range))/10
範囲はその単一の列/行です
これは、平均から MIN 値を除外し、両側に常に 5 つのセルがあると仮定して機能するはずです (たとえば、MIN は列 A から E にあることはできません)。
質問で概説したことを行う式があります。
列の Min (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 つのセルを選択します (そして、同じことを左に逆にして繰り返す 2 番目のオフセット)。average
最後に、これらの範囲の両方が数式の入力として使用されます。
あなたのガールフレンドのために、私はこの質問に答えているだけです。
あなたが以下を持っているとしましょう
列 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 個の値の平均値を返します。