こんにちは、なかぜんです!
今回は、Accessでよく使うDLookup関数について、初心者さん向けにわかりやすく解説していきます。
「別のテーブルにある情報を簡単に取り出したい!」そんなときに便利なのが、DLookup関数。
実務でもとっても役立つので、ぜひ一緒にマスターしましょう!
そもそもDLookup関数って何?
DLookup関数とは、Accessの中で「指定したテーブルやクエリから、条件に一致する値を1つだけ取り出す」ための関数です。
イメージとしては、表の中から「この人の電話番号だけ知りたい!」みたいに、ピンポイントで1つだけ情報を取ってくる感じですね。
DLookup関数の基本構文
DLookup(フィールド名, テーブル名またはクエリ名, 条件)
それぞれの意味はこんな感じです。
- フィールド名:取り出したい列(例:”電話番号”)
- テーブル名またはクエリ名:探す対象(例:”T_顧客マスタ”)
- 条件:どのデータを取るか決める条件(例:”顧客ID = 1″)
【実例】DLookupで別テーブルの値を取得してみよう!
例えば、フォームに顧客IDを入力したら、自動的にその人の電話番号を表示するケースを考えます。
フォームに設定するコード例
Private Sub 顧客ID_AfterUpdate()
Me.電話番号 = DLookup("電話番号", "T_顧客マスタ", "顧客ID = " & Me.顧客ID)
End Sub
このコードの意味を簡単に説明します。
- 顧客ID_AfterUpdate:顧客IDの入力が終わった直後に動くイベント
- Me.電話番号:フォーム上の「電話番号」フィールドにセットする
- DLookup関数:T_顧客マスタテーブルから、顧客IDが一致する電話番号を取り出している
フォーム画面イメージ

こんなふうに、入力した瞬間に別テーブルから値が取得できるので、作業効率もアップしますよ!
注意点・よくあるミス
- 条件式の文字列に注意!
文字型の場合、条件式にシングルクォート(’)が必要です。 - Nullエラーに注意!
対象データが存在しないとDLookupはNullを返します。Nz関数でカバーしましょう。
文字型条件の例
' 文字型の場合
DLookup("電話番号", "T_顧客マスタ", "顧客名 = '" & Me.顧客名 & "'")
Nz関数でNull対策する例
Me.電話番号 = Nz(DLookup("電話番号", "T_顧客マスタ", "顧客ID = " & Me.顧客ID), "")
エラーを防ぐためにも、Nz関数をセットで使う習慣をつけると安心ですね。
応用ポイント(中級者向け)
複数条件で絞り込む方法
DLookupの条件部分に、複数条件をつなげることもできます!
DLookup("在庫数", "T_商品マスタ", "商品ID = " & Me.商品ID & " AND 倉庫ID = " & Me.倉庫ID)
これなら「商品IDも倉庫IDも一致するデータ」を取り出せます。
クエリを対象にする応用テクニック
テーブルだけでなく、事前に作ったクエリ名をDLookup対象にすることもできます。
複雑な条件はクエリ側で作っておき、DLookupではシンプルに取得、という設計もおすすめですよ。
まとめ|DLookupを使ってAccessをもっと便利に!
今回は、DLookup関数を使って別テーブルの値を取り出す方法を紹介しました。
- 別テーブルから簡単にデータ取得できる
- フォームやクエリと組み合わせるととっても便利
- Null対策や文字列条件に注意!
最初は慣れが必要ですが、一度使い方を覚えるとAccessの世界がぐっと広がります。
ぜひ今回の記事を参考に、実際に自分のフォームやクエリでも試してみてくださいね!
