web-dev-qa-db-ja.com

2つのワークシートで類似のデータを検索し、3番目のワークシートに配置する

2つの異なるExcelスプレッドシートのデータを3番目のExcelスプレッドシートに結合するための最良/最も簡単な方法は何ですか?スプレッドシート1にはユーザー名のみが含まれます。スプレッドシート2には、姓、名、部署、ユーザー名など、多くの情報が含まれます。3番目のスプレッドシートで、スプレッドシート1のユーザー名に、スプレッドシート2の名、姓、部門を表示する必要があります。

3
CSF

使用したい関数はVLOOKUPです。これを行う方法は、シートの配置方法によって多少異なりますが、すべて同じ構文に従います。

= VLOOKUP(_lookup value_、_table array_、_column index number_、_range lookup_)

  • _lookup value_は、検索するデータです。
  • _table array_は、検索ターゲットを含む列を含め、データを取得するセルを定義します
  • _column index number_は、情報を取得する_table array_内の列のインデックスです。 (例:A:Eの配列の場合、列Dは_4_になります。)
  • _range lookup_は、近似一致が許容されるか、完全一致が必要かを指定するTRUE/FALSEオプションです。単純にするために、これを常にFALSEに設定します。詳細が必要な場合は、ExcelでF1キーを押します。

数式の形式は、データがすべて同じブックにあるかどうかによって少し異なります。以下にそれぞれの例を示します。

重要な注意: _lookup value_として使用している検索語句must最初の列で検索可能VLOOKUPが機能するための_table array_.


最初の例:すべてのデータは同じExcelワークブックにありますが、シートは異なります。最初のシートには「ユーザー名」というラベルが付いており、ユーザー名のみが含まれています。 2番目のシートは「ユーザーデータ」と呼ばれ、すべてのユーザーの詳細が含まれています。 3番目のシートを「ルックアップ結果」と呼びます。 「ユーザーデータ」シートには、_A:E_という5つの列があります。

  1. 「ユーザーデータ」スプレッドシートの列Aにすべてのユーザー名が含まれていることを確認します。
  2. すべてのユーザー名を「ユーザー名」から「検索結果」にコピーします。
    • ヘッダー行を使用していると仮定するので、「Lookup Results」の最初のユーザー名はA2に表示されます。
  3. 「ルックアップ結果」のB2の式は次のようになります:=VLOOKUP(A2,'User Data'!A:B,2,FALSE)
  4. 「ルックアップ結果」のB3の式は次のようになります:=VLOOKUP(A3,'User Data'!A:B,2,FALSE)
  5. 「ルックアップ結果」のC2の式は次のようになります:=VLOOKUP(A2,'User Data'!A:C,3,FALSE)

ここまでで、パターンが表示されるはずです。各列について、最初のセル(例:B2)にVLOOKUP数式を記述し、シートの残りの部分に数式を入力するだけです。ただし、数式across列のカットアンドペーストはそれほど簡単ではありません。_table array_および_column index number_の値を更新する必要があります。


2番目の例:各データセットは、独自のExcelブックに保持されます。ブック内のシート名はデフォルトです(つまり、最初のシートは「Sheet1」です)。ワークブックのファイル名は、「Usernames.xlsx」、「User Data.xlsx」、および「Lookup Results.xlsx」です。これらはすべて、「My Spreadsheets」というフォルダにあります。このフォルダは、「Me」というユーザーのデスクトップにあります。

  1. 「User Data.xlsx」シートの列Aにすべてのユーザー名があることを確認します。
  2. すべてのユーザー名を「Usernames.xlsx」から「Lookup Results.xlsx」にコピーします。
    • 繰り返しになりますが、ヘッダー行を使用すると仮定すると、これはA2から始まります。
  3. 「Lookup Result.xlsx」のB2の式は=VLOOKUP(A2,'C:\Users\Me\Desktop\My Spreadsheets\[User Data.xlsx]Sheet1'!A:B,2,FALSE)である必要があります
  4. 「Lookup Result.xlsx」のB3の式は=VLOOKUP(A3,'C:\Users\Me\Desktop\My Spreadsheets\[User Data.xlsx]Sheet1'!A:B,2,FALSE)である必要があります
  5. 「Lookup Result.xlsx」のC2の式は=VLOOKUP(A2,'C:\Users\Me\Desktop\My Spreadsheets\[User Data.xlsx]Sheet1'!A:C,3,FALSE)である必要があります

ここでも、ここまででパターンを確認できるはずです。必要に応じて行を下に、列を横切って切り取り/貼り付け/微調整を行うと、設定が完了します。


ここで覚えておくべきもう1つのことは、「ユーザー名」データの変更に対してこのシートが自動的に更新されないことです。 「ユーザーデータ」シートへの変更はこの方法でプルできますが、「ユーザー名」の変更にも従う場合は、より高度な手法が必要になります。

5
Iszi

Vlookupなどは、両方のシートのデータが同一で​​ある場合にのみ機能します。
私が必要としているのは、Excel用のファジーロジックアドオンです。これにより、いくつかの異なるパラメーターに基づいて同様の結果を見つけることができます。 ダウンロードページ を確認します。

1
SiParker

HLOOKUP/VLOOKUP-数式を使用してスプレッドシート1からユーザー名をフェッチし、次にユーザー名をキーとして使用し、スプレッドシート2をHLOOKUP/VLOOKUPの1つのインスタンスのルックアップマトリックスとして使用します(どちらかはわかりません)英語版以外のExcelバージョンを使用)。

0
Jan Schejbal

Excelファイルからクエリを使用できます。

  • スプレッドシート1でデータセットの名前を定義します([式]タブ-> [名前の定義])
  • スプレッドシート2でデータセットの名前を定義する
  • スプレッドシート1で、[データ]タブに移動し、[他のソースから]を選択し、ドロップダウンから[Microsoft Queryから]を選択します
  • 他のスプレッドシートファイルを選択し、手動で列をマージすることを確認します
  • 次のウィンドウ「Excelファイルからのクエリ」で、最初のデータセットの「ユーザー名」列を2番目のデータセットの「ユーザー名」列にドラッグアンドドロップします-これらの列の間にリンクが作成されます
  • [ファイル]メニューに移動し、[MS Office Excelにデータを返す]をクリックすると、[データのインポート]ダイアログがポップアップします
  • 一致したデータをインポートするシートを選択します
  • [OK]をクリックします-両方のスプレッドシートの列と一致するデータが表示されます

または、ファイルをオンラインサービスにアップロードしてもかまわない場合は、たとえば http://www.gridoc.com/join-tables を使用し、ドラッグアンドドロップを使用してシートをマージできます(免責事項:Iツールの作成者です)。

お役に立てれば。

0
endriju