前提・実現したいこと
VBAで写真のような果物と価格の表(A、B列)があったとき、D、E列に被っている果物の中央値を出力したいです(被っていない果物はそのまま出力)。この表は11行ですが、実際には何千行もあります。
該当のソースコード
作成したソースコードは以下の通りです。
6行目のThenとElseの間に中央値のコードを書きたいのですが、書き方がわからないです。
またコードを書くのが初めてなので、もし他にもおかしいところなどございましたら、お手数をおかけしますが、ご指摘いただけますと幸いです。
VBA
1Sub 重複データから中央値を取り出す() 2 3 Dim dData As New Dictionary 4 Dim data As Variant 5 6 data = Range("A1").CurrentRegion 7 8 For i = 1 To UBound(data) 9 If dData.Exists(data(i, 1)) Then 10 11 Else 12 dData.Add data(i, 1), data(i, 2) 13 End If 14 15Next i 16 17Dim key As Variant 18Keys = dData.Keys 19 20For i = 1 To UBound(Keys) 21 Cells(1 + i, "D").Value = Keys(i) 22 Cells(1 + i, "E").Value = dData(Keys(i)) 23Next i 24 25End Sub
試したこと
最大値の取得などと近いのかなと思い、調べたら出てきたのですがなかなかヒントが得られず、結局中央値の取得はできませんでした。
果物・値段でソートして、「りんご」の総数を取得して、総数の半分の値になったところを値段を取得したらよいです。総数が偶数なら中央の2件の平均値を取得したらよいです。

回答1件
あなたの回答
tips
プレビュー