2

私はMatlabの達人ですが、今日の人生でExcelを理解することはできないようです. 投票を追跡するスプレッドシートがあります。つまり、1 から 5 のスケールで、3 人が 4 に投票し、2 人が 3 に投票し、1 人が 1 に投票しました。これらの投票の中央値を見つけたいのですが、最初にそれらを配列に変換します。それ以外の場合は、投票数の中央値をとっているだけです。この場合、配列を機能させるのに問題があります。上記の例では、{4 4 4 3 3 1} のような配列を作成する必要があり、その中央値を取得できます (配列に対して通常の中央値関数を使用できると思いますか?)。

ここでの問題は、私がエクセルをよく知らないことにあると思います。だから私はただ答えを求めているだけだと思います。しかし、誰かが私にヒントを与えることができますか?

ここに画像の説明を入力

4

2 に答える 2

1

これは私に興味をそそられました。配列数式でこれを行う方法があると確信していますが、それらは私の強みではありませんでした。当分の間、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 についてあまり知らないとしたら、次のようにします。

  1. Excel から Alt + F11 を押して VB エディターを開きます。
  2. VB エディタのメニューで、[挿入] -> [モジュール] を選択します。
  3. 上記のコードを貼り付けます
  4. 中央値 type が必要なセルで=MedianArray(B1:F1,B2:F2)、スコアが行 1 列 B から F にあり、カウントがすぐ下にあると仮定します。

お役に立てれば。

于 2013-11-05T05:44:36.023 に答える