別のワークブックで値を検索/参照する方法は?
Excel での日常業務では、別のワークブックに保存された情報を取得する必要が頻繁にあります。集計資料の作成、部門間でのレコード照合、別途管理されている参照データの活用など、異なるワークブックから値を検索して情報を取得するスキルは不可欠です。この機能により、分散したソース範囲や大規模なデータセット、同僚と共有しているワークブックを扱う際にも、データの一貫性が大幅に向上し、手作業によるエラーを効果的に削減できます。
本記事では、別のワークブック内の値を検索または参照し、その結果を現在使用中のExcel ファイルに直接返す方法を解説します。代表的なユースケースに対応した3 つの実用的な手法をご紹介します。具体的には、開いている/閉じているワークブックを参照できる従来の VLOOKUP 関数、動的な要件に柔軟に対応する VBA アプローチ、そしてその代替となる数式テクニックです。詳細な説明と具体的なシナリオを通じて、ご自身のワークフローに最適な方法を的確に選べるようになります。
- Excel で別のワークブックからデータと返す値を VLOOKUP で取得
- VBA を使用して別の閉じられたワークブックからデータと返す値を VLOOKUP で取得
- ワークブック間検索のための代替数式ソリューション
Excel で別のワークブックからデータと返す値を VLOOKUP する
Excel で果物購入表を作成している際に、別のワークブックに保存されている最新の果物価格を取得する必要があるとします。コピーアンドペーストに頼る代わりに、元のワークブックから果物の名前を検索し、対応する価格を自動的に取得すれば、リアルタイムでの正確性と常に最新の情報を保証できます。以下では、VLOOKUP 関数を使ってこのタスクを実行する方法をご紹介します。


まず、データを集計または要約したいワークブックと、価格などの情報を含むソースワークブックの両方を開いてください。
果物の価格を表示したいセルを選択し、次の数式をそのセルに入力してください(必要に応じて内容を置き換えてください):
=VLOOKUP(B2,[Price.xlsx]Sheet1!$A$1:$B$24,2,FALSE)
数式を入力したら、Enterキーを押してください。この検索をさらに多くの行に適用したい場合は、フィルハンドル(セルの右下隅にある小さな四角)を下方向にドラッグして、必要なだけセルを埋めてください。


説明とヒント:
(1)上記の数式例について:
- B2は、検索対象の果物が含まれるセルです。
- Price.xlsxは価格データを管理する元のワークブックです。ファイル名と拡張子が正しいことをご確認ください。
- Sheet1は、元のワークブック内で検索テーブルを含むシートです。
- A$1:$B$24は、キー(例:果物の名前)と値(価格)が含まれるデータ範囲です。使用するデータ範囲が異なる場合は、この範囲を適宜調整してください。
- 2は、値が制限された範囲の2 列目から返されることを意味します。
- FALSEは完全一致のみを許可します。TRUEを使用すると、誤った結果や近似値が得られる場合があります。
(3)#N/A エラーが表示される場合、通常は検索値がソース範囲に存在しないことを意味します。スペル、範囲を再確認し、必要なすべてのワークブックが利用可能であることを確認してください。
この方法を使えば、外部ソースから最新の価格や情報を簡単に統合できます。参照先のワークブックが開かれているか、正しいパスからアクセス可能であれば、元のワークブックが更新されるたびに自動的に値も反映されます。
メリット:ほとんどのユーザーにとって設定が簡単で、データが自動的に更新されます。
制限事項:パスやブック名が変更されると数式が複雑になりやすく、閉じられたワークブックを参照する場合は大規模なファイルの処理が遅くなったり、リンクの更新を求めるプロンプトが表示されたりすることがあります。
より複雑なデータ取得が必要な場合や、外部ワークブックが閉じた状態で頻繁にデータを参照する必要がある場合は、以下の VBA メソッドまたは代替数式をご検討ください。

KUTOOLS AI でExcel の魔法を解き放ちましょう
- スマート実行:セル操作、データ分析、チャート作成をすべてシンプルなコマンドで実現します。
- カスタム数式:ワークフローの効率化に役立つ、あなただけのカスタマイズ数式を生成します。
- VBA コーディング:VBA コードを簡単に記述・実装できます。
- 数式の解釈:複雑な数式が簡単に理解できます。
- テキスト翻訳:スプレッドシート内で言語の壁を乗り越えましょう!
VBA を使用して、別の閉じたワークブックからデータと返す値を VLOOKUP する
VLOOKUP を使用した検索参照の設定は、特に元のファイルのパス、ファイル名、またはワークシートを頻繁に変更する場合、混乱を招くことがあります。このような状況では、VBA を使用して検索プロセスを自動化することで、より効率的な解決策となり、元のワークブックが閉じられている場合でも値を検索でき、範囲選択とデータ返却を自動化できます。
VBA を使用してワークブック間の検索を行う手順は次のとおりです:
1。 同時押しでAlt+F11キーを押すと、Microsoft Visual Basic for Applicationsエディターウィンドウが開きます。
2。VBA エディターで、挿入>標準モジュールをクリックし、以下のコードをモジュールウィンドウにコピー&ペーストしてください:
VBA:別の閉じられたワークブックからデータと返す値を VLOOKUP で取得
Option Explicit
' Convert column number to column letter
Private Function GetColumn(ByVal Num As Integer) As String
If Num <= 26 Then
GetColumn = Chr(Num + 64)
Else
GetColumn = Chr((Num - 1) \ 26 + 64) & _
Chr((Num - 1) Mod 26 + 65)
End If
End Function
Sub FindValue()
Dim xAddress As String
Dim xString As String
Dim xFileName As Variant
Dim xUserRange As Range
Dim xRg As Range
Dim xFCell As Range
Dim xSourceSh As Worksheet
Dim xSourceWb As Workbook
On Error Resume Next
' Get current selection address
xAddress = Application.ActiveWindow.RangeSelection.Address
' Ask user to select lookup range
Set xUserRange = Application.InputBox( _
Prompt:="Lookup values :", _
Title:="Kutools for Excel", _
Default:=xAddress, _
Type:=8)
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0
' Limit selection to used range
Set xUserRange = Application.Intersect(xUserRange, _
Application.ActiveSheet.UsedRange)
' Ask user to select source workbook
xFileName = Application.GetOpenFilename( _
"Excel Files (*.xlsx), *.xlsx", _
1, _
"Select a Workbook")
If xFileName = False Then Exit Sub
Application.ScreenUpdating = False
' Open source workbook
Set xSourceWb = Workbooks.Open(xFileName)
Set xSourceSh = xSourceWb.Worksheets.Item(1)
' Build external reference string
xString = "='" & xSourceWb.Path & Application.PathSeparator & _
"[" & xSourceWb.Name & "]" & _
xSourceSh.Name & "'!$"
' Loop through user range
For Each xRg In xUserRange
' Find matching value in source sheet
Set xFCell = xSourceSh.Cells.Find( _
What:=xRg.Value, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
MatchCase:=False)
' If found, write formula 2 columns to the right
If Not xFCell Is Nothing Then
xRg.Offset(0, 2).Formula = _
xString & _
GetColumn(xFCell.Column + 1) & _
"$" & xFCell.Row
End If
Next xRg
' Close source workbook without saving
xSourceWb.Close False
Application.ScreenUpdating = True
End Sub 重要な詳細:
- このコードは、検索範囲から右に2 列オフセットされた列に一致した値を返します。たとえば、列 B を選択した場合、結果は列 D に表示されます。
- 結果を別の列に表示させたい場合は、2を
xRg.Offset(0,2).Formula内の数値に他の値を指定してください(例:1は次の列、3は右から3 列目)。 - プロンプトが表示されたら、正しいワークブックとワークシートを選択してください。このコードは常に選択したファイルの最初のワークシートを使用します。元のシートが最初でない場合は、コードを調整してください。
- 初めて実行するマクロを実行する前に、必ずファイルを保存してください。マクロの実行後は元に戻すことができません。
3。マクロを実行するには、F5キーを押すか、実行ボタンをクリックしてください。「Kutools for Excel」というタイトルのダイアログボックスが表示され、検索したい値を含むセル範囲の選択を求められます。

4。 範囲を選択したら、OKをクリックします。するとすぐに、元のワークブック(閉じていても可)を選択するための別のダイアログボックスが表示されます。適切なファイルを参照して選択し、開くをクリックして確定してください。

マクロが完了すると、元のワークブックからの対応する値が現在のワークシートの対象列に返されます。一部の値が見つからない場合は、検索値の範囲が現在のワークシートとソースデータで完全に一致しているか確認してください(大文字・小文字や先頭の後ろのスペースが完全一致に影響します)。

メリット:閉じたワークブックにも対応!数式内にハードコードされたファイルパスを回避でき、実行時にソースファイルを柔軟に選べます。
注意点:マクロを有効にする必要があります。VBA は保護されたシートやExcel 以外のファイル形式では動作しない場合があります。この方法を頻繁に使う場合は、マクロ対応のワークブック(*。xlsm)として保存してください。
エラーが発生した場合は、シート名やファイル名にタイポがないこと、選択した範囲が適切であること、およびファイルパスにアクセス可能であることをご確認ください。デバッグ時には、VBA エディターを使ってコードを1 行ずつステップ実行することをおすすめします。
ワークブック間検索のための代替数式ソリューション
従来の VLOOKUP 関数や VBA に加え、Excel にはワークブック間の検索を行うための別の方法もあります。データ構造が異なる場合や、マクロよりも数式を好む場合、さらには左方向への検索や複数条件での検索など、より柔軟な対応が必要な場面に最適です。
ワークブック間で INDEX 関数と MATCH 関数を使用する
INDEX と MATCH を組み合わせることで、別のワークブック内の任意の方向(左、右、上、下)から値を検索できます。これは、取得したい列が検索列の右側にない場合(VLOOKUP の制限)に特に役立ちます。
シナリオ:別の開いているワークブックから価格を取得したいが、果物の名前が必ずしも最初の列にあるとは限らないと仮定します。
1。 結果を表示したいセル(例:C2)を選択し、以下の数式を入力してください(必要に応じてワークブック名、シート名、範囲を置き換えてください):
=INDEX([Price.xlsx]Sheet1!$B$1:$B$24, MATCH(B2, [Price.xlsx]Sheet1!$A$1:$A$24,0)) 2。Enterキーを押して確定し、必要に応じてフィルハンドルをドラッグして数式を他の行にもコピーまたは入力してください。
パラメーターの説明:
- [Price.xlsx]Sheet1!$B$1:$B$24:価格が格納されているセル範囲です。
- B2:検索する果物の名前を入力してください。
- [Price.xlsx]Sheet1!$A$1:$A$24:検索値を探す範囲です。
- 末尾の0が完全一致を保証します。
強み:左右両方向の検索に対応し、より柔軟なレイアウトを実現します。
ヒント:元のファイルを移動または名前変更する際は、数式を更新せずにそのままにしないでください。
XLOOKUP を使用したワークブック間検索(Excel 365 以降)
Excel 365 またはExcel 2021 をご利用の場合、新しい XLOOKUP 関数はさらに柔軟です。完全一致を簡単に検索でき、左側の検索をサポートし、エラーなく欠損値を自動的に処理できます。
使用方法:
結果を表示したいセルに以下を入力します:
=XLOOKUP(B2, [Price.xlsx]Sheet1!$A$1:$A$24, [Price.xlsx]Sheet1!$B$1:$B$24, "Not found") Enterキーを押して確定し、必要に応じて数式をコピーできます。「Not found」は、検索が失敗した際に表示したい任意のテキストに変更可能です。
メリット:VLOOKUP よりも柔軟で管理しやすく、従来の数式にありがちな多くのエラーを回避できます。ただし、XLOOKUP は新しいバージョンのExcel でのみご利用いただけます。
複数条件での一致、結合されたシート内での検索、非常に大規模なファイルでのパフォーマンス問題の回避など、複雑な要件がある場合は、ソースデータを構造化テーブルで整理するか、Excel の Power Query ツールを使用して複数のワークブック間を効率的にデータのリンクすることを検討してください。
最高の 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 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得
