Excel で双方向検索の数式を使うには、どうすればよいでしょうか?
双方向検索を使えば、テーブル内で特定の行と列が交差するセルの値をピンポイントで取得できます。この手法は、データセットに行ラベルと列見出しが明確に定義されており、それらの条件に基づいて特定の値をすばやく引き出したい場合に特に役立ちます。たとえば、売上レポート、勤怠表、予算表などを管理していて、特定の日付と従業員識別子に対応する値を即座に特定したいシーンに最適です。Excel の双方向検索機能を使えば、こうした情報を効率的に抽出することが可能です。以下のスクリーンショットはその代表的な例で、「AA-3」行と「5-Jan」列が交差する位置にある値が返されている様子を示しています。
数式による双方向検索
Excel で双方向検索を実行するのは、特に構造化されたテーブルを扱う際に、指定された行見出しと列見出しが交差するセルの値を取得するためのシンプルで効果的な方法です。この手法は、日付ごとの従業員記録の比較、地域と月に基づく予算数値の抽出、特定の学生と科目に対するテストスコアの検索など、さまざまなシーンで活用できます。
数式は柔軟で便利ですが、主な制限としてテーブル構造が固定されている必要があります。より動的または自動化された要件がある場合は、他のソリューションの方が適している可能性があります。追加の方法については以下で説明します。
双方向検索を数式で実行するには、まず次の手順から始めましょう。
1.検索対象の列見出しと行見出しをリストアップしましょう。見出しを正確かつ一貫性のあるものに保つことで、余分なスペースやフォーマットの不整合による検索エラーを確実に回避できます。以下は、適切にラベル付けされたテーブルの例です。
2.結果を表示したいセルに、テーブルのレイアウトに応じて次のいずれかの数式を入力してください。
数式1:INDEX と MATCH の組み合わせ
=INDEX(A1:I8,MATCH(L1,A1:A8,0),MATCH(L2,A1:I1,0)) この数式は、指定された見出しと一致する行および列のインデックスを特定し、その交差点にある値を返します。
数式2:数値テーブル向けの SUMPRODUCT
=SUMPRODUCT((A1:A8=L1)*(A1:I1=L2),A1:I8) SUMPRODUCT は、データがすべて数値で構成されている場合に最適ですが、テキストを含む結果に対しては期待通りの動作をしないことがあります。
数式3:MATCH を使用した VLOOKUP
=VLOOKUP(L1,$A$1:$I$8,MATCH(L2,B1:I1,0)+1,FALSE) この方法では、まず行を検索し、続いて MATCH 関数を使って列のオフセットを特定します。
ヒント:
(1)パラメーターの説明:
A1:A8は行ラベルの範囲です。L1は検索したい特定の行ラベルです。A1:I1は列見出しの範囲です。L2は対象の列見出しです。A1:I8はテーブル全体の範囲です。データに応じて、必要に応じてこれらの参照を調整してください。
(2) 検索値の範囲がテキストの場合、SUMPRODUCTを使用すると0 が返されます。このような場合は、INDEX/MATCHの組み合わせをご利用いただくことをおすすめします。
数式を入力する際は、L1(行用)およびL2(列用)の見出し値がテーブル内のものと完全に一致していることをご確認ください(大文字・小文字も含め、必要に応じて正確に一致させる必要があります)。

3.数式を確定するには、Enterキーを押してください。選択したセルには、指定された行ラベルと列見出しが交差する位置の値が表示されます。
注意点とトラブルシューティング:
- 数式が「#N/A」などのエラーを返す場合は、見出しに不要なスペースや大文字・小文字の不一致がないか、再度ご確認ください。
- 数式をセル間でコピーする際は、相対参照を絶対参照に変更する必要がある場合があります。その際は、必要に応じて「$」記号をご活用ください。
- テーブルのサイズが大きかったり可変的だったりする場合は、動的名前付き範囲や後述の VBA などの代替ソリューションを検討し、スケーラビリティを高めることをおすすめします。
双方向検索のための VBA マクロ
数式ベースの双方向検索が制限される状況(大文字と小文字を区別しない検索が必要な場合、動的な範囲サイズに対応したい場合、繰り返しの検索を自動化したい場合など)では、カスタム VBA マクロが実用的な解決策となります。特に、テーブル構造が頻繁に変化する環境で作業するユーザーにとっても、また検索を自動化ワークフローに統合する必要があるユーザーにとっても、VBA は高い価値を提供します。
Excel で双方向検索を行うための VBA マクロの設定と使用方法は次のとおりです。
1.開発者ツール>Visual Basicをクリックして、Microsoft Visual Basic for Applicationsエディターを開きます。挿入>標準モジュールをクリックし、新しいモジュールを追加して、次のコードを貼り付けます。
Sub TwoWayLookupMacro()
Dim tblRange As Range
Dim rowLabel As String
Dim colLabel As String
Dim rowIdx As Variant
Dim colIdx As Variant
Dim result As Variant
Dim xTitleId As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set tblRange = Application.InputBox("Select the table range for lookup", xTitleId, Type:=8)
rowLabel = Application.InputBox("Enter the row label to find", xTitleId, Type:=2)
colLabel = Application.InputBox("Enter the column header to find", xTitleId, Type:=2)
On Error GoTo 0
rowIdx = Application.Match(LCase(rowLabel), Application.Index(tblRange, 0, 1), 0)
colIdx = Application.Match(LCase(colLabel), Application.Index(tblRange, 1, 0), 0)
If IsError(rowIdx) Or IsError(colIdx) Then
MsgBox "Row or column label not found. Please check your input.", vbExclamation, xTitleId
Exit Sub
End If
result = tblRange.Cells(rowIdx, colIdx).Value
MsgBox "The value at the intersection is: " & result, vbInformation, xTitleId
End Sub 2.マクロを実行するには、
ボタンをクリックするか、F5キーを押してください。すると、テーブル範囲の選択と行・列ラベルの入力を求められ、マクロがその交差点にある値をポップアップダイアログボックスに表示します。
実用的なヒント:
- 正確なマッチングを行うため、テーブルの見出しが「範囲を選択してください」の最初の行および最初の列に配置されていることを確認してください。
- このマクロは入力を小文字に変換して大文字・小文字を区別しないマッチングを実現し、一般的な大文字・小文字のエラーを回避するのに役立ちます。
- テーブルのレイアウトが異なる場合は、適切なインデックスを指定するためにマクロを調整する必要があるかもしれません。
- より複雑なユースケースでは、VBA コードを拡張して一括検索を処理したり、結果をExcel セルに直接書き出したりすることも可能です。
見出しが見つからないなどの問題が発生した場合は、ラベルおよびデータ範囲に前後のスペースや非表示文字が含まれていないかご確認ください。
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得