• 作成日 : 2025年8月25日

DGET関数の使い方:条件に一致する単一の値を抽出する方法

DGET関数は、データベース形式の表から指定した条件に完全に一致する単一の値を抽出する関数です。顧客管理システムでの特定顧客情報の検索、在庫管理での商品データの抽出、人事データベースからの従業員情報の取得など、正確なデータ抽出が必要な場面で活用されます。

例えば、社員番号から該当する社員の部署名を取得したり、商品コードから在庫数を確認したりする際に便利です。本記事では、DGET関数の基本的な使い方から実践的な活用方法、エラー対処法まで、初心者の方にもわかりやすく解説していきます。

DGET関数とは

DGET関数は、データベース関数の一つで、指定した条件に一致するレコードから特定のフィールドの値を取得します。この関数の特徴は、条件に一致するレコードが必ず1つだけある場合に値を返す設計になっています。複数のレコードが条件に一致する場合や、一致するレコードが存在しない場合はエラーを返します。

VLOOKUPやINDEX/MATCH関数と似た機能を持ちますが、DGET関数は複数の条件を同時に指定できる点で優れています。また、条件を別のセル範囲に記述するため、条件の変更や管理が容易になります。

DGET関数の基本的な使い方

関数の構文を理解する

DGET関数の構文は次のとおりです。

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

データベースは、列見出しを含むデータ範囲を指定します。フィールドは、取得したい列の見出し名または列番号を指定します。条件は、検索条件を記述したセル範囲を指定します。

基本的な使用例

実際の使用例を見てみましょう。

A1:D10に社員データ(社員番号、氏名、部署、給与)があり、F1:F2に条件(社員番号: 1001)を設定した場合:

=DGET(A1:D10, “部署”, F1:F2)

この数式は、社員番号が1001の社員の部署名を返します。

列番号を使用する場合の例:

=DGET(A1:D10, 3, F1:F2)

この場合、3列目(部署列)の値を取得します。

条件範囲の作成方法

DGET関数を使用する際の重要なポイントは、条件範囲の正しい作成です。条件範囲は、データベースと同じ列見出しを持つ必要があります。

例えば、社員番号と部署の両方を条件にする場合、条件範囲を以下のように作成します。

  • F1: 社員番号、G1: 部署(見出し)
  • F2: 1001、G2: 営業部(条件値)

この条件範囲をF1:G2として指定することで、複数条件での検索が可能になります。

DGET関数の実践的な利用シーン

在庫管理システムでの活用

商品の在庫管理において、商品コードとサイズの組み合わせから在庫数を取得する場合、DGET関数が効果的です。商品マスタに商品コード、サイズ、カラー、在庫数などの情報が記録されている状況で、特定の商品の在庫を即座に確認できます。

例えば、注文処理時に商品の在庫確認を行う際、商品コードとサイズを条件として設定し、DGET関数で在庫数を抽出します。これにより、在庫切れの判定や出荷可能数の確認が自動化できます。

人事データの管理

従業員データベースから特定の情報を抽出する際にDGET関数を活用できます。社員番号を条件として、所属部署、入社日、資格情報などを取得する場合に便利です。

給与計算や人事評価の際に、複数の条件(部署と職位など)を組み合わせて、該当する給与テーブルの値を参照することも可能です。これにより、複雑な条件での情報検索が簡潔に実現できます。

売上データの分析

特定の条件に合致する売上記録から情報を抽出する場合に有効です。例えば、特定の日付と店舗の組み合わせで売上高を取得したり、顧客IDと購入日から購入金額を確認したりできます。

月次レポートの作成時に、各店舗の特定商品の売上を自動的に集計する仕組みを構築できます。条件を変更するだけで、異なる期間や商品の分析が可能になります。

DGET関数の応用テクニック

動的な条件設定

条件値を他のセルから参照することで、動的な検索システムを構築できます。

=DGET(データ範囲, “売上”, 条件範囲)

条件範囲の値を入力フォームから参照するように設定すれば、ユーザーが条件を入力するだけで結果が自動更新されます。

エラー処理の実装

DGET関数は条件に一致するレコードが1つでない場合エラーを返すため、IFERROR関数でエラー処理を行います。

=IFERROR(DGET(A1:D100, “価格”, F1:F2), “該当なし”)

この方法により、エラー時に分かりやすいメッセージを表示できます。

複数条件の活用

AND条件とOR条件を使い分けることで、柔軟な検索が可能です。同じ行に複数の条件を記述するとAND条件、異なる行に記述するとOR条件として機能します。

例えば、「営業部かつ主任」または「総務部かつ課長」という条件の場合、条件範囲を3行で構成します。

DGET関数のよくあるエラーと対策

#NUM!エラーへの対処

このエラーは、条件に一致するレコードが2件以上ある場合に表示されます。データの重複を確認し、条件をより具体的にすることで解決できます。

重複チェック用の数式を作成し、事前に確認することも有効です。

=COUNTIFS(データ範囲の列1, 条件1, データ範囲の列2, 条件2)

この結果が1でない場合は、DGET関数がエラーになる可能性があります。

#VALUE!エラーへの対処

DGET 関数は、条件に一致するレコードが 1 件も存在しない場合に #VALUE! エラーを返します。 まずは条件範囲が正しく設定され、検索条件が適切かを確認してください。

また、フィールド名(列見出し)がデータベース範囲と完全に一致していない場合や、余分なスペース・全角/半角の相違がある場合にも #VALUE! エラーが発生することがあります。列見出しの文字列を TRIM 関数などで整える、またはフィールドを列番号で指定して見出しの不一致リスクを回避する方法も有効です。

条件範囲の設定ミス

条件範囲には必ず見出し行を含める必要があります。また、条件範囲の見出しは、データベースの見出しと完全に一致している必要があります。

大文字小文字の違いやスペースの有無にも注意が必要です。TRIM関数やCLEAN関数でデータをクリーニングすることを推奨します。

DGET関数と他の関数との組み合わせ

VLOOKUP関数との使い分け

単一条件での検索の場合の比較:

VLOOKUP使用例:

=VLOOKUP(検索値, A1:D100, 3, FALSE)

DGET使用例:

=DGET(A1:D100, “部署”, 条件範囲)

複数条件が必要な場合は、DGET関数の方が適しています。

INDEX/MATCH関数との組み合わせ

DGET関数で取得した値を使って、さらに別の検索を行う例:

=INDEX(別テーブル, MATCH(DGET(A1:D100, “コード”, F1:F2), コード列, 0), 2)

DSUM関数やDAVERAGE関数との連携

同じ条件範囲を使って、値の取得と集計を同時に行う例:

=DGET(データ範囲, “単価”, 条件範囲) * DSUM(データ範囲, “数量”, 条件範囲)

これにより、売上を条件付きで計算する場合に役立ちます。

IF関数での条件分岐

DGET関数の結果に基づいて処理を分岐する例:

=IF(ISNUMBER(DGET(A1:D100, “在庫”, F1:F2)),

IF(DGET(A1:D100, “在庫”, F1:F2)>10, “在庫あり”, “在庫少”),

“商品なし”)

TEXT関数でのフォーマット

取得した値を特定の形式で表示する例:

=TEXT(DGET(A1:D100, “金額”, F1:F2), “#,##0円”)

DGET関数の実務での注意点

データの一意性の確保

DGET関数を使用する前に、検索キーとなる列の値が一意であることを確認しましょう。重複データが存在する場合は、事前にデータクリーニングを行うか、より詳細な条件を設定する必要があります。

データベースに主キーを設定し、定期的に重複チェックを実行することで、DGET関数の信頼性を高められます。

条件範囲の管理

条件範囲は別シートに作成し、名前定義を使用することで、メンテナンスが容易になります。また、条件範囲を色分けしたり、コメントを追加したりすることで、他のユーザーにも分かりやすくなります。

パフォーマンスの考慮

大規模なデータベースに対してDGET関数を頻繁に使用する場合、計算速度が遅くなることがあります。必要に応じて、計算方法を手動に設定したり、検索結果をキャッシュしたりすることを検討しましょう。

また、データベース範囲を必要最小限に絞ることで、パフォーマンスを向上させることができます。

DGET関数で1件のデータ抽出を行う

DGET関数は、条件に一致する1件のデータを抽出するのに適した関数です。VLOOKUPやINDEX/MATCHのような関数と比較して、複数の条件を簡潔に指定できる点が特徴です。

在庫管理、人事データ、売上分析など、1つだけ該当する情報を正確に取り出したい場面で活用できます。

条件範囲の指定やエラー処理を適切に行うことで、信頼性のある検索システムを作ることができます。

ぜひ実務でDGET関数を活用し、効率的なデータ管理を実現してください。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事