ExcelのMEDIAN関数を使用しメジアン(中央値)を求める:Access

Accessにはメジアン(中央値)を求める関数がありません。Excelには統計グループにMEDIAN関数があるので、これを利用します。AccessからExcelの関数を使用するには、参照設定でライブラリを設定するだけです。




BackHome BackTips Backメニュー

■ 開始ボタンを追加したフォームの作成

下は都道府県人口テーブルを使用したフォームです。
この人口フィールドのメジアン(中央値)を求めます。
人口フィールドのメジアン(中央値)を求める

フォームに[中央値]ボタンを挿入します。
プロパティシートのクリック時イベントから「イベント プロシージャ」を選択し、右の[…]ボタンをクリックします。
フォームに[中央値]ボタンを挿入

■ 参照設定でExcelライブラリを追加する

VBE画面 メニューの[ツール]~[参照設定]をクリックします。
[ツール]~[参照設定]をクリックする

参照設定ダイアログが開きます。
ライブラリのリストから「Microsoft Excel 15.0 Object Library」にチェックを入れ[OK]をクリックします。
15.0はバージョンにより異なります。
「Microsoft Excel 15.0 Object Library」にチェックを入れる

■ ExcelのMEDIAN関数を使用するAccess VBAの作成

ExcelのMEDIAN関数を呼び出す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

実行結果です。
当道府県人口のメジアンが表示されました。
今回の結果では、鹿児島県がメジアンになりました。
当道府県人口のメジアンが表示された


BackHome BackTips Backメニュー

Copyright(C) FeedSoft