共通の列を持つ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」を使用したことはありません。
提案?
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
その後、それを展開して、複数の行と複数のインポートされた列を処理できるようにする必要があります。
Excelでは、VLOOKUP
を使用します。
表AのデータがExcelの列AとBにリストされているとします。
そして、表Bのデータは列EとFにリストされています。
次に、C列の最初の行に移動して、次のように入力します。
=VLOOKUP(A:A,E:F,2,FALSE)
これは、列Aと列Eを一致させ、見つかった場所の近くの2番目の列にあるものをすべて取得して列Cに配置するように指示します。
C列の残りの行をオートフィルして、残りのデータと一致させます。
Excelを使用できる場合、Excelファイルからのクエリ機能があります。
または、CSVファイルをオンラインサービスにアップロードすることを気にしない場合は、たとえば http://www.gridoc.com/join-tables を使用し、ドラッグドロップを使用してスプレッドシートに参加できます(免責事項:私はツールの作成者です)。
お役に立てれば。