
【スプレッドシート】DGET関数でデータ検索を効率化する方法
今回はDGET関数を使って、VLOOKUPを使わず重複のないデータベースのレコードを取得する方法を紹介します。

※ DGET関数とは?
指定した条件に合致する1つのデータを瞬時に抽出できるGoogleスプレッドシートの便利な関数。
DGET関数の使い方5ステップ。便利だけど使い方には注意が必要
あんまり有名じゃないDGET関数を使って、テーブルの値を簡単に取得する方法を紹介します。Google引用は以下説明。使ってみないとよく分からない&なかなかクセ強めの憎めない関数です。
DGET(データベース, フィールド, 条件)
データベース - 検証するデータを含む配列または範囲で、1 行目に各列の値に対するラベルを含む形式とします。
フィールド - 抽出して処理する値を含むデータベース内の列を指定します。
フィールドには、データベースの 1 行目の列見出しと対応するテキストラベルか、検証対象の列を示す番号(1 列目の値は 1)を指定します。
条件 - 処理前にデータベースの値をフィルタするためのゼロ以上の条件を含む配列または範囲です。
以下テーブルのB2セルにDGET関数で、任意のNoを入力したら紐づくレコードが表示される仕様にします。

STEP1. データベース範囲を選択(絶対参照にしとく)
C2セルに以下を入力。範囲選択は「絶対参照(参照先のセルを$A$1のように固定する)」にしておきます。
=dget(データベース範囲,

ちなみにスプレッドシートでは、まとまったデータがあるとテーブルに変換できる機能があります。この機能を使ったテーブルを参照すると、勝手に絶対参照になるから便利です。

スプレッドシートのテーブル変換機能詳細は別記事で。
STEP2. 抽出する対象の見出しを選択
抽出対象の見出しを選択します。ここまで以下の式になってるはず👇️
=dget(データベース範囲,見出しセル

STEP3. 絞り込む見出しと値の2行を選択(絶対参照にしとく)
絞り込む見出しと値の2行を選択して、絶対参照にしておきます。2行選択しないとエラーになるので注意。
=dget(データベース範囲,見出しセル,絞込む見出しと値セル)

STEP4. 横にコピー
完了した式を選択して右にコピーします。対象の見出しがある列まで右ドラッグ。(ここはナムエラーになってますが無視で)

STEP5. 絞り込む値をプルダウンで設定して完成
最後に絞り込みの値をプルダウンで設定して完成です。

プルダウンした値を設定すると、きちんとDGET関数でレコードが取得できていることが分かります。

DGET関数がVLOOKUP関数に負けてるとこ
DGET関数がVLOOKUP関数に負けてるところです。いっぱいあった。
一番はDGET使う際に、見出し整えたりデータ整形が必要な点でしょう。
複雑な条件設定が必要
DGET関数は検索条件をテーブル形式で指定する必要があること。VLOOKUPは単純に検索値と範囲を指定するだけで良いので、条件設定がDGETに比べて直感。特にシンプルな検索にはVLOOKUPの方がおすすめ複数条件での検索が必須
DGET関数は複数条件での検索が得意だが、単一条件でも必ず条件セルを用意する必要がある。そのため、シート上での準備が増える。VLOOKUPは単一の値で検索できるので、ちょっとした検索用途にも手軽に使える。結果が1件に限定される
DGET関数は検索結果が複数行に該当する重複値がある場合エラーを返す。VLOOKUPは一致する最初の値を返すので、重複値があっても問題なく処理できる。重複値のあるデータでの検索にはVLOOKUPの方が使いやすい。(ただし重複値も返してしまう致命的なミスに繋がる可能性も)セル範囲の設定の手間
DGET関数を使う場合、データベースの構造と条件セルの範囲設定が厳密でないとエラーになりやすい。一方、VLOOKUPは検索範囲と列番号を指定するだけで動作するため、範囲設定がより簡単。
DGET関数のヘルプ👇️
おわりに. DGET関数の使い所とか
DGET関数を使えば複雑な検索をしなくて済むけどテーブルや見出しの設定が必要なのが手間
重複値があるとNUMになる。
レコードの値が重複しない抽出時に利用できるかも。または重複値をあえて探すときに使えるかもしれない
フィルター操作してもらいたくないときに役立つかも
絞り込みを他の人に頼むときに使えると思います。
DGET関数、使い方にクセがありすぎてやっぱLOOKUP関数にもどっちゃうんですよね…