ExcelのDGET関数の使い方|条件に一致するデータを1件だけ抽出する

スポンサーリンク

「データベースから条件に合うデータを1件だけ取り出したい」と思ったことはありませんか。VLOOKUPだと検索列が左端にないと使えなかったり、条件を複数指定しにくかったりしますよね。そんなときに便利なのがDGET関数です。

DGET関数を使えば、データベース形式のリストから条件に一致するレコードをピンポイントで1件だけ取り出せます。この記事では、DGET関数の基本から複数条件の指定方法、エラーの対処法まで実例付きで解説します。

DGET関数とは?

DGET関数は、Excelのデータベース関数の1つで、指定した条件に一致するレコードから1つの値を抽出する関数です。

  • 読み方: ディー ゲット
  • 語源: Database GET(データベースから取得する)
  • 対応バージョン: Excel 2007 / 2010 / 2013 / 2016 / 2019 / 2021 / Microsoft 365

DGET関数の特徴は、条件に一致するレコードがちょうど1件のときだけ値を返すことです。0件や2件以上だとエラーになるため、「該当データが1つに絞れているか」の確認にも使えます。

DGET関数の書き方

基本構文

=DGET(データベース, フィールド, 検索条件)

DGET関数の引数は3つで、すべて必須です。

引数の説明

引数必須説明
データベース必須検索対象のデータ範囲。先頭行に列見出し(ヘッダー)が必要です
フィールド必須値を取り出す列の指定。列見出しの文字列(例: "売上")または列番号(例: 3)で指定します
検索条件必須抽出条件を記述したセル範囲。列見出しと条件値のセットで指定します

フィールドの指定方法は2通りあります。

指定方法説明
列見出しの文字列"売上"ダブルクォーテーションで囲んだ見出し名
列の位置番号3データベース範囲の左端を1として数えた番号

列見出しの文字列で指定するほうが、列の挿入・削除に強いのでおすすめです。

検索条件の作り方

検索条件はセル範囲で指定します。条件の書き方にはルールがあるので確認しておきましょう。

  • 1行目: データベースと同じ列見出しを入力する
  • 2行目以降: 抽出したい条件値を入力する
  • 条件範囲はデータベースの範囲と重ならない場所に作成する

条件をデータベースの下に置くと、データを追加したときに範囲が重なってしまいます。データベースの横や上に条件範囲を作るのが安全です。

基本的な使い方

社員名簿から特定の社員の情報を取り出す例で、DGET関数の使い方を見ていきましょう。

データ(A1:D6):

社員番号氏名部署売上
1001田中太郎営業部500000
1002鈴木花子経理部300000
1003佐藤一郎営業部450000
1004山田美咲総務部280000
1005高橋健一営業部520000

検索条件(F1:F2):

社員番号
1003

数式:

=DGET(A1:D6, "氏名", F1:F2)

結果: 佐藤一郎

社員番号が1003のレコードから、「氏名」列の値を取り出しています。フィールドに "売上" を指定すれば、同じ条件で売上金額を取得できます。

=DGET(A1:D6, "売上", F1:F2)

結果: 450000

このように、検索条件はそのままで、フィールドを変えるだけで取り出す列を切り替えられるのがポイントです。

実践的な使い方・応用例

複数条件でデータを絞り込む

DGET関数は複数の条件を同時に指定できます。条件範囲に複数の列見出しを横に並べるとAND条件(すべてに一致)になります。

検索条件(F1:G2):

部署売上
営業部>480000
=DGET(A1:D6, "氏名", F1:G2)

結果: 高橋健一

「営業部」かつ「売上が480000より大きい」の両方を満たすレコードが高橋健一さん1件だけなので、正しく値が返ります。

比較演算子を使った条件指定

検索条件では比較演算子を使えます。よく使うパターンをまとめました。

条件値の書き方意味
>500000500000より大きい
>=500000500000以上
<300000300000未満
<>営業部営業部以外

比較演算子を使うときは、条件値をそのままセルに入力してください。ダブルクォーテーションで囲む必要はありません。

セル参照で条件を動的に切り替える

条件値にセル参照を使えば、セルの入力を変えるだけで抽出結果を切り替えられます。

たとえば、セルH2にプルダウンで部署名を入力できるようにしておき、検索条件を次のように設定します。

検索条件(F1:G2):

部署売上
(H2のセル参照)>480000

H2に「営業部」と入力すれば営業部の結果が、「経理部」と入力すれば経理部の結果が返ります。プルダウンとDGET関数を組み合わせると、簡易的な検索フォームを作れます。

よくあるエラーと対処法

DGET関数で発生しやすいエラーは3種類です。

#VALUE! エラー

原因: 条件に一致するレコードが2件以上ある場合に発生します。

対処法:

  • 検索条件を追加して、結果が1件になるように絞り込む
  • 社員番号やIDなど、一意の値(ユニークキー)を条件に使う
  • 複数件の抽出が必要な場合は、DGET関数ではなくFILTER関数やテーブルのフィルター機能を検討する

#VALUE! エラー(フィールド指定の問題)

原因: フィールド引数に指定した列見出しがデータベースに存在しない場合にも #VALUE! エラーになります。

対処法:

  • 列見出しの文字列が完全に一致しているか確認する(スペースや全角半角の違いに注意)
  • 列番号で指定する場合は、データベース範囲内の列数を超えていないか確認する

#NAME? エラー

原因: 関数名のスペルミスや、文字列の引用符忘れが考えられます。

対処法:

  • 関数名が DGET になっているか確認する
  • フィールドを文字列で指定する場合は、ダブルクォーテーション(")で囲んでいるか確認する

まとめ

DGET関数は、データベースから条件に一致するデータを1件だけ取り出すための関数です。

覚えておきたいポイントをまとめます。

  • 構文は =DGET(データベース, フィールド, 検索条件) の3つの引数
  • 検索条件は列見出し+条件値のセル範囲で指定する
  • 複数条件はAND条件(横並び)で絞り込める
  • 結果が0件または2件以上のときはエラーになる
  • 複数件を取り出したい場合はFILTER関数を検討する

似た関数との使い分け

DGET関数と似た機能を持つ関数を比較してみましょう。

関数用途複数条件戻り値
DGET条件に一致する値を1件抽出対応単一の値(1件のみ)
VLOOKUP検索値に一致する行から値を取得非対応単一の値
INDEX+MATCH柔軟な位置指定で値を取得組み合わせで対応単一の値
FILTER条件に一致するデータを一括抽出対応配列(複数件)

条件に一致するデータが1件に絞れる場面では、VLOOKUPよりもDGET関数のほうがシンプルに書けることがあります。複数件を抽出したい場合はFILTER関数を検討してみてください。

関連するデータベース関数

データベース関数は他にも種類があります。目的に合わせて使い分けてみてください。

  • DAVERAGE関数 - 条件に一致するデータの平均値を求める
  • DCOUNT関数 - 条件に一致する数値データの個数を数える
  • DMIN関数 - 条件に一致するデータの最小値を求める

エラーの種類と対処法をもっと詳しく知りたい方は「Excelエラー値12種類の原因と対処法一覧」も参考にしてみてください。

タイトルとURLをコピーしました