Accessにはメジアン(中央値)を求める関数がありません。Excelには統計グループにMEDIAN関数があるので、これを利用します。AccessからExcelの関数を使用するには、参照設定でライブラリを設定するだけです。
■ 開始ボタンを追加したフォームの作成
下は都道府県人口テーブルを使用したフォームです。
この人口フィールドのメジアン(中央値)を求めます。
フォームに[中央値]ボタンを挿入します。
プロパティシートのクリック時イベントから「イベント プロシージャ」を選択し、右の[…]ボタンをクリックします。
■ 参照設定でExcelライブラリを追加する
VBE画面 メニューの[ツール]~[参照設定]をクリックします。
参照設定ダイアログが開きます。
ライブラリのリストから「Microsoft Excel 15.0 Object Library」にチェックを入れ[OK]をクリックします。
15.0はバージョンにより異なります。
■ ExcelのMEDIAN関数を使用するAccess VBAの作成
ExcelのMEDIAN関数を呼び出すVBAを入力します。
・MEDIAN関数の引数に使用する配列を作成します。
・配列の要素数は、レコードセットのRecordCountで求め、ReDimで設定しています。
・RecordCountを正確に取得するため、MoveLastで一度最終レコードまで移動しています。
・Doループでレコードを移動し、順に人口を配列に代入します。
・Excel関数をAccessから呼び出すには、Excel.Application.MEDIAN(引数)になります。
Private Sub コマンド10_Click()
Dim rs As Recordset
Dim a1 As Variant
Dim ln As Long
Set rs = CurrentDb.OpenRecordset("T_都道府県人口")
rs.MoveLast
ReDim a1(rs.RecordCount)
rs.MoveFirst
ln = 0
Do Until rs.EOF
a1(ln) = rs(2)
ln = ln + 1
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
MsgBox "人口のメジアン(中央値)は " & Excel.Application.MEDIAN(a1) & " です。"
End Sub
実行結果です。
当道府県人口のメジアンが表示されました。
今回の結果では、鹿児島県がメジアンになりました。