スプレッドシートのDGET関数の使い方|条件に合う1つの値

スポンサーリンク

「担当者名から売上金額を1件だけ引っ張りたい」「部署と商品の組み合わせで単価を取得したい」。こんな場面、VLOOKUPで頑張ろうとして苦戦していませんか。

VLOOKUPは左端列でしか検索できないので、条件が複雑になると数式がどんどん長くなりますよね。しかも複数条件で1つの値を取り出すとなると、INDEX+MATCHの組み合わせなど上級テクニックが必要になります。

そんなときに使えるのがDGET関数です。条件を別のセル範囲に書いておくだけで、一致するレコードから指定した列の値を1つ返してくれます。この記事では、DGET関数の基本から複数条件の書き方、VLOOKUPとの使い分け、よくあるエラーの対処法までまとめて紹介します。

スプレッドシートのDGET関数とは?

DGET関数(読み方: ディー ゲット)は、データベース形式の表から条件に合うレコードを探し、指定した列の値を1つ返す関数です。

名前は「Database GET(データベースから取得)」の略です。DSUM(条件付き合計)やDCOUNT(条件付き個数)と同じ「データベース関数」の仲間になります。

DGET関数の特徴をまとめると、次のとおりです。

  • 条件をセル範囲(条件範囲)で指定するスタイル
  • 条件に一致するレコードが1件だけのとき、指定した列の値を返す
  • 一致するレコードが2件以上あると #NUM! エラー になる
  • 複数条件(AND条件)にも対応
  • 見出し付きのリスト形式のデータが前提

NOTE

DGET関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同じ関数があるので、ファイルのやり取りでも安心です。

DGET関数の書き方(構文と引数)

基本構文

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

引数は3つです。すべて必須で、省略はできません。

引数の説明

引数必須/任意説明
データベース必須見出し行を含むデータ範囲(例: A1:D100)
フィールド必須値を取得する列の見出し名(文字列)または列番号(数値)
条件必須条件を記述したセル範囲(見出し行+条件行)

それぞれ詳しく見ていきましょう。

データベース(第1引数)

データベースには、見出し行を含めたデータ範囲を指定します。先頭行に列の見出し(「部署」「担当者」「金額」など)が入っている必要があります。

フィールド(第2引数)

取得したい値がある列を指定します。指定方法は2つあります。

  • 文字列で指定: "金額" のように、見出しと同じ文字列をダブルクォーテーションで囲む
  • 数値で指定: データベースの左端列を1として、列の位置を数値で指定する(3列目なら 3

文字列で指定するほうが、何の列かわかりやすいのでおすすめです。

条件(第3引数)

条件範囲には、見出し行と条件行の2行以上のセル範囲を指定します。データベース関数に共通する書き方です。

条件範囲の作り方は次のセクションで詳しく説明しますね。

TIP

フィールドに列番号を使う場合、データベース範囲の左端が1です。シートのA列が1とは限らないので注意してください。

DGET関数の基本的な使い方

サンプルデータ

次のような売上データを使って説明します。

 ABCD
1部署担当者商品金額
2営業部田中ノートPC150000
3総務部鈴木プリンター35000
4営業部佐藤モニター48000
5経理部高橋ノートPC150000
6営業部田中キーボード8000
7総務部伊藤モニター48000

条件範囲の設定方法

DGET関数の条件は、別のセル範囲に書きます。条件範囲の作り方は他のデータベース関数と共通です。

  1. 1行目に見出しを書く — データベースの見出しと完全に同じ文字列を使う
  2. 2行目に条件値を書く — 一致させたい値を入力する

たとえば「鈴木」さんの金額を取得したい場合、シートの空いているエリア(たとえばF1:F2)に次のように書きます。

 F
1担当者
2鈴木

数式はこうなります。

=DGET(A1:D7, "金額", F1:F2)

結果は 35000 です。担当者が「鈴木」のレコードは1件だけなので、その金額が返されます。

TIP

条件範囲の見出しは、データベースの見出しと1文字でも違うと正しく動きません。コピー&ペーストで作ると確実ですよ。

比較演算子を使った条件

条件値には比較演算子も使えます。

条件値の書き方意味
鈴木「鈴木」と完全一致
>=5000050,000以上
<100000100,000未満
<>営業部「営業部」以外

ただしDGET関数は条件に合うレコードが1件だけのときに値を返します。比較演算子を使って複数件ヒットすると #NUM! エラーになるので、条件は絞り込みが十分かどうか確認しましょう。

DGET関数の実践的な使い方・応用例

複数条件(AND条件)で値を取得する

「営業部」かつ「担当者が田中」の商品名を取得したい、というケースです。

AND条件は、条件範囲の同じ行に複数の見出し・条件値を横に並べて書きます。

 FG
1部署担当者
2営業部田中

しかし、このサンプルデータでは営業部の田中さんは2件(ノートPCとキーボード)あるため、このまま実行すると #NUM! エラーになります。

条件をもう1つ追加して、一意に絞り込みましょう。

 FGH
1部署担当者商品
2営業部田中キーボード
=DGET(A1:D7, "金額", F1:H2)

結果は 8000 です。3つの条件すべてに一致するレコードが1件に絞り込まれたので、正しく値が返ります。

DGET関数は「結果が1件に絞り込まれること」が大前提です。条件を組み合わせてレコードを一意に特定するのがポイントですよ。

条件に合うレコードが複数あるときの対処

DGET関数で #NUM! エラーが出たら、条件に一致するレコードが2件以上あるということです。対処方法は3つあります。

  1. 条件を追加して絞り込む -- 上の例のように、AND条件で列を増やしてレコードを1件にする
  2. 集計で代用する -- 合計が欲しければDSUM関数、平均ならDAVERAGE関数、個数ならDCOUNT関数を使う
  3. FILTER関数で全件取得する -- 該当レコードをすべて表示したい場合はFILTER関数が適しています

用途に合わせて使い分けてみてください。

条件範囲を切り替えて検索対象を変える

DGET関数の強みは、条件をセルに書いているため、セルの値を書き換えるだけで取得結果が即座に変わる点です。

たとえば条件範囲のF2セルを「鈴木」から「高橋」に変えるだけで、DGET関数の結果が自動的に切り替わります。数式を修正する必要はありません。

ドロップダウンリスト(データの入力規則)と組み合わせれば、担当者を選ぶだけで対応する金額が表示される検索フォームのような仕組みが作れますよ。

DGET関数とVLOOKUP関数の使い分け

スプレッドシートで「条件に合う値を取得する」なら、VLOOKUP関数も定番です。どちらを選ぶか迷う方が多いので、違いを整理します。

比較項目DGET関数VLOOKUP関数
条件の指定方法セル範囲(条件範囲)数式の引数に検索値を直接書く
検索できる列どの列でも条件にできる左端列でしか検索できない
複数条件条件範囲に列を追加するだけ作業列やINDEX+MATCHが必要
結果が複数件のとき#NUM! エラー(1件のみ対応)最初に見つかった値を返す
近似一致非対応第4引数で切り替え可能
条件の切り替えやすさセルを書き換えるだけ数式を編集する必要あり

使い分けのポイント:

  • 「名前で検索して値を1つ取得」のシンプルな用途 → VLOOKUP関数のほうが手軽
  • 検索列が左端にない、または複数条件で絞り込みたい → DGET関数が便利
  • 条件を頻繁に切り替えたい → DGET関数がおすすめ(セルを変えるだけで結果が変わる)
  • 該当が複数件あっても最初の1件を取得したい → VLOOKUP関数を使う

実務では、マスターテーブルからの単純な検索にはVLOOKUP関数、複数条件でピンポイントに値を取り出す場面にはDGET関数、と使い分けるとスムーズです。

よくあるエラーと対処法

DGET関数で「思った結果にならない」ケースをまとめました。

症状原因対処法
#NUM! エラー条件に一致するレコードが2件以上ある条件を追加して1件に絞り込む。集計が目的ならDSUM/DAVERAGEを使う
#VALUE! エラー条件に一致するレコードが1件もない条件値のスペルミスや全角・半角の違いを確認する
#VALUE! エラーフィールドに存在しない列名を指定しているデータベースの見出しと同じ文字列を使う
結果が0や空白該当レコードのセルが空白データの入力漏れがないか確認する
想定と違う値が返る条件範囲に空白行が含まれている条件範囲を必要な行だけに絞る(空白行は「すべて一致」扱い)
条件が部分一致になる条件値にワイルドカード * が含まれている完全一致にしたい場合は ="=鈴木" のように先頭に = を付ける

TIP

DGET関数で最も多いトラブルは #NUM! エラーです。「条件に一致するレコードが何件あるか」をDCOUNT関数で事前に確認すると、原因の切り分けがスムーズですよ。

Excelとの違い

DGET関数はExcelとGoogleスプレッドシートで基本的に同じ動作です。

項目ExcelGoogleスプレッドシート
構文=DGET(database, field, criteria)=DGET(データベース, フィールド, 条件)
動作条件に合う値を1つ返す条件に合う値を1つ返す
条件範囲の仕様見出し行+条件行見出し行+条件行
複数一致時のエラー#NUM!#NUM!
該当なし時のエラー#VALUE!#VALUE!

引数名の表記は日本語と英語で異なりますが、機能は同じです。ExcelでのDGET関数の使い方はDGET関数で条件に一致するレコードを1つ抽出するでも紹介しています。

まとめ

DGET関数は、データベース形式の表から条件に合うレコードの値を1つ取得する関数です。

ポイントを整理します。

  • 構文は =DGET(データベース, フィールド, 条件) で、引数は3つ
  • 条件は数式内ではなくセル範囲(条件範囲)に書くのが特徴
  • 条件に一致するレコードが1件のときだけ値を返す(2件以上は #NUM! エラー)
  • 複数条件は条件範囲に列を追加してAND条件で絞り込む
  • VLOOKUPは左端列限定だが、DGETはどの列でも条件にできる
  • 単純な検索にはVLOOKUP、複数条件でピンポイント取得にはDGETがおすすめ
  • #NUM! エラーが出たらDCOUNT関数で該当件数を確認してみる

まずは簡単な表で =DGET(A1:D7, "金額", F1:F2) から試してみてください。


関連記事

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