これは私に興味をそそられました。配列数式でこれを行う方法があると確信していますが、それらは私の強みではありませんでした。当分の間、VBAソリューションは次のとおりです。
Function MedianArray(rngScore As Range, rngCount As Range) As Double
Dim arrS() As Variant, arrC() As Variant, arrM() As Variant
Dim i As Integer, j As Integer, k As Integer
Dim d As Double
arrS = rngScore
arrC = rngCount
d = WorksheetFunction.Sum(rngCount)
ReDim arrM(1 To d, 1 To 1)
k = 1
For i = 1 To UBound(arrS, 2)
For j = 0 To arrC(1, i) - 1
arrM(k, 1) = arrS(1, i)
k = k + 1
Next j
Next i
MedianArray = WorksheetFunction.Median(arrM())
End Function
あなたが VBA についてあまり知らないとしたら、次のようにします。
- Excel から Alt + F11 を押して VB エディターを開きます。
- VB エディタのメニューで、[挿入] -> [モジュール] を選択します。
- 上記のコードを貼り付けます
- 中央値 type が必要なセルで
=MedianArray(B1:F1,B2:F2)
、スコアが行 1 列 B から F にあり、カウントがすぐ下にあると仮定します。
お役に立てれば。