【Excel・Access】エクセルからアクセスのデータをVlookupのように取得する

Excel

今回はちょっとニッチな話題です。Microsoftアクセスで作成したデータベースをエクセル上に取り込む際に、Vlookup関数のような感じで値を取得する方法です。

エクセルからアクセスデータ内の1つの値を取得する場合に一番簡単なのは、一度データをすべてエクセルに読み込んでから、その表をVlookup関数で検索する方法だと思います。ただ、今回はアクセスのデータすべてをエクセル上に展開することなく一つの値だけを取得してみたいと思います。

下記のようなデータがアクセスに格納されていて、これをエクセルから「C商店 – みかん」のように指定して値をとってくるイメージです。

スポンサーリンク

1. データテーブルのデザインを縦型に

実はこのようなデータ取得を行うのであれば、上記のようなテーブルをアクセスに作ってはいけません。データベースはそもそも行(上記の例では商店)を指定してデータを取ってくることが基本なので、列(上記の例では果物の種類)を指定することは難しいです。

これを解決するには、そもそも「すべて条件を行から指定できる」ようにする必要があります。言葉で言ってもわかりにくいので、下記のテーブルを見て下さい。

言いたいことは伝わりましたでしょうか。A列、B列に条件を抽出するためのラベルを格納し、抽出したいデータはC列に格納しています。このような形状のアクセスデータベースに対して、A列とB列の条件を指定してやれば、Vlookup関数のようにデータを取り出すことが可能です。A列とB列の条件が全く同じものが複数あった場合はもちろん出力も複数になりますのでご留意ください。このような形状のデータベースに対して、エクセル上のセルから抽出条件を指定して値を取り出してみたいと思います。

2. データベースの選択

まずはエクセルから先ほどのアクセスデータベースに接続します。エクセルの適当なシート上で、上部のメニュー(リボン)から、「データ > データの取得 > その他のデータ ソースから > Microsoft Queryから」を選びます。

データソースの選択というタイトルのダイアログが現れるので、データベースタブで「MS Access Database*」を選択し「OK」ボタンを押しましょう。次の画面では接続するデータベースを選択します。フォルダーを選択し、画面左側のアクセスデータベースを選択しましょう(今回は、先ほどのデータをデスクトップのtest.accdbというファイルに保存しています)。

次のクエリウィザードとうタイトルの画面では、抽出するデータを選択します。今回はお店と果物の種類を指定して値段のデータを取りたいので、「値段」という項目を選択し「>」ボタンを押してクエリの列に加えます。終わったら「NEXT >」ボタンです。

以降は「クエリウィザード – 完了」という画面が出るまで「NEXT >」を押して進んでいきます。入力はデフォルトのままで大丈夫です。「クエリウィザード – 完了」画面に来たら「Microsoft Queryでデータの表示またはクエリの編集を行う」を選択し「Finish」ボタンを押してください。

3. パラメータクエリの設定

上記の操作を終えると新たに「Microsoft Query」というタイトルの画面が開きます。上部のメニューから「条件 > 抽出条件の追加」を選択します。抽出条件の追加というダイアログが出てくるので、フィールドから「お店」、演算子は「=」を選択します。一番下の値は、エクセル上のセルの値を参照したいので[]で囲んだ適当な変数名を入力します(下記の例では、[shop_name]としています)。入力が終わったら「追加」ボタンを押してください。追加ボタンを押すとパラメータ値の入力というダイアログが出てきますが、何も入力せずにOKボタンを押してください。

引き続き抽出条件の追加ダイアログが開いているので、同様に果物の抽出条件も追加します。フィールドを「果物」、演算子を「=」として、値には[]で囲った適当な変数(例えば、[fruit])を入力して追加ボタンを押します。 パラメータ値の入力ダイアログも先ほどと同様に何も入力せずにOKボタンを押します。

これで抽出条件の入力は完了したので閉じるボタンからダイアログを閉じましょう。

4. エクセルシートにデータを展開

抽出条件の入力が済み、Microsoft Queryの画面に戻ったら、上側のメニューから「ファイル > Microsoft Excelにデータを返す」を選択します。データのインポートダイアログが出るので、抽出結果を表示したいセルを選択します(下記の例では、Sheet1のB4セルを選択しています)。セルを選択したらOKボタンです。

続けて、パラメーター値の入力という画面が開きます。ここでは抽出条件を入力するのですが、今回はエクセルの入力に従って動的に抽出結果を変更したいので、エクセル上のセルへの参照を入力します(下記の例では、Sheet1のB1)。二つのパラメーター両方に対して、それぞれ設定してください。この際「この値/参照を今後の更新に使用する」と「セルの値が変わるときに自動的に更新する」の両方にチェックを入れておいてください。データが適切に更新されるようになります。すべてを入力したらOKボタンです。

これでエクセルシート上にデータが取り込まれました。抽出条件を入力するセルが空欄なのでまだ何も表示されていないと思いますので、先ほど選択した抽出条件のセルに抽出したいデータの値を入れてみましょう。これで抽出したかったデータが読み込まれるはずです(下記の例ではB1セルのお店の名前、B2セルの果物名に応じて、B5セルに値段が表示されるようになっています)。