web-dev-qa-db-ja.com

ExcelまたはOpenOfficeの共通列で2つのスプレッドシートを結合する

共通の列を持つ2つのCSVファイルがあり、共通の列でテーブルを「結合」したい。

たとえば、「A」と「B」は「結果」に等しいと結合します。 1つのテーブルに他のテーブルに存在しないキー値がある場合、そのテーブルは空白のままになります。

== Table A ==        == Table B ==        == Table result ==
Name  ,Age           Name  ,Sex           Name ,Age ,Sex
Bob   ,37     +      Bob   ,Male     =>   Bob  ,37  ,Male
Steve ,12            Steve ,Male          Steve,12  ,Male
Kate  , 7                                 Kate , 7  , 
                     Sara  ,Female        Sara ,    ,Female 

SQLデータベースを使用してこれを行う方法は知っていますが、「Excel」または「OpenOffice.org Calc」を使用したことはありません。

提案?

27

Excelでは、 vlookup を使用すると、求めていることの一部を実行できます。具体的には、vlookupを使用して左または右の外部結合を実行できますが、完全な外部結合(テーブル結果のような)を実行することはできません。

上記の例で外部結合を行うには、「Table B」のC2に次を追加します(または「Table B」をコピーしてからこれを行います)。

=vlookup(
    a2, # the cell value from the current table to look up in the other table
    table_a!$1:$174832718, # the other table
                           # don't manually type this--select the entire 
                           # other table while the cursor is editing this
                           # cell, then add the "$"s--Excel doesn't
                           # automatically add them
                           # (the syntax here is for different sheets in
                           # the same file, but Excel will fill this in 
                           # correctly for different files as well)
    2, # the column to get from the other table (A=1, B=2, etc.)
    FALSE) # FALSE=only get exact matches TRUE=find approx. matches if no exact match

その後、それを展開して、複数の行と複数のインポートされた列を処理できるようにする必要があります。

32
robert

Excelでは、VLOOKUPを使用します。
表AのデータがExcelの列AとBにリストされているとします。
そして、表Bのデータは列EとFにリストされています。
次に、C列の最初の行に移動して、次のように入力します。

=VLOOKUP(A:A,E:F,2,FALSE) 

これは、列Aと列Eを一致させ、見つかった場所の近くの2番目の列にあるものをすべて取得して列Cに配置するように指示します。
C列の残りの行をオートフィルして、残りのデータと一致させます。

9
BeemerGuy

Excelを使用できる場合、Excelファイルからのクエリ機能があります。

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

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

お役に立てれば。

2
endriju