• 締切済み

2つのデータの統合方法を教えてください。

以下の2つのcsvデータを統合したいと思います。  1.氏名,メールアドレス  2.氏名,住所,電話番号 上記のデータを「氏名」で紐付けして統合したいと思っています。  1.A,B         ⇒  A,B,C,D  2.A,C,D 具体的に確認したいことは、以下の2点です。  1.統合方法を知りたい。  2.1の方法で統合した場合で、氏名の共通がなかった場合は、   空欄で統合できる方法を知りたい。 以上、よろしくお願いいたします。

みんなの回答

noname#97729
noname#97729
回答No.4

エクセルでする場合 氏名,メールアドレス をSheet2 のA列、B列に配置 氏名,住所,電話番号 をSheet3 のA列、B列、C列に配置 そして、「Sheet1」を「統合」の名前に変えます。 統合方法(処理内容)は  1.Sheet2、Sheet3のA列の名前を統合シートのA列に持ってきます。 2.統合シートのA列の重複した名前を1つにします、 3.統合シートのA列の名前から各シートの値を収得します。 -------------------------------------------------------- Sub 統合macro() Dim lastrow, lastrow1, lastrow2, i, t, m As Long Dim temp As String Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet2") Set ws2 = Worksheets("sheet3") Worksheets("統合").Select '----統合シートに各シートのA列の値収得------ 'sheet2A列の最終行収得 lastrow1 = ws1.Range("A65536").End(xlUp).Row For i = 1 To lastrow1 Cells(i, 1).Value = ws1.Cells(i, 1).Value Next m = lastrow1 'sheet3A列の最終行収得 lastrow2 = ws2.Range("A65536").End(xlUp).Row For i = 1 To lastrow2 Cells(m + i, 1).Value = ws2.Cells(i, 1).Value Next '-------統合シートのA列の重複削除----------- 'A列の最終行収得 lastrow = Range("A65536").End(xlUp).Row '最後の位置から重複行の削除処理 For i = lastrow To 2 Step -1 temp = Cells(i, 1).Value '目的のセル値がA列に2つ以上あるときセルの削除 If Application.WorksheetFunction.CountIf(Range("A1:A" & lastrow), temp) > 1 Then 'セルの行の削除 Cells(i, 1).EntireRow.Delete Shift:=xlUp End If Next i '-------統合シートA列を元にデータ収得-------- 'A列の最終行収得 lastrow = Range("A65536").End(xlUp).Row For i = 1 To lastrow For t = 1 To lastrow1 If Cells(i, 1).Value = ws1.Cells(t, 1).Value Then Cells(i, 2).Value = ws1.Cells(t, 2).Value End If Next Next For i = 1 To lastrow For t = 1 To lastrow2 If Cells(i, 1).Value = ws2.Cells(t, 1).Value Then Cells(i, 3).Value = ws2.Cells(t, 2).Value Cells(i, 4).Value = ws2.Cells(t, 3).Value End If Next Next MsgBox "処理終了" End Sub -----------ここまで

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.3

一方的に、つまり1表にある氏名が2表に必ずある、またはその逆だったら vlookup関数を使うのが通常の方法と思いますが、どちらにも相手が存在しな い可能性がある場合はvlookupでやるのは難しい気がします。 if関数を階差で使う方法で考えてみました。 1表も2表も表題行が1行あると仮定します。 1)2表のB列に空列を挿入する。 2)2表のB2に =IF(A2=A3,B3,"") を入れ、下までコピー。 3)1表のC2に =IF(A2=A1,"▲","") を入れ、下までコピー。 4)1表の表題行を除いた部分(A~C列)をコピーし、2表の下へ貼り付け。 5)2表でA列をキーに昇順で並べ替え。 6)2表で[Ctrl]+[A]を押した後、[Ctrl]+[C]、[編集]→[形式を選択して貼り付け]→[値]にチェック→[Ok] 7)C列をキーに昇順で並べ替え。 8)▲が表示されている行を削除

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

2つのCSVファイルを同じブックの2枚のシートとして読み込みます。 読み込みにはEXCELを開いて「データ」→「外部データの取り込み」→「データの取り込み」を選択し、読み込むファイルを指定します。 この際に注意するのは「電話番号の列の書式を文字列にする」ことです。これを忘れると、電話番号の先頭0がなくなる可能性があります。 あとはVLOOKUP関数でAの名前に対するC,Dを検索して表示させるだけです。名前がヒットしない場合は =IF(ISNA(VLOOKUP(A1,Sheet2!A1:A1000,2,0)),"",VLOOKUP(A1,Sheet2!A1:A1000,2,0)) のようなエラー処理を行うと良いでしょう また片方のシートにしか存在しない名前を見つけるためにはCOUNTIF関数が使用できます。 =COUNTIF(Sheet2!A1:A1000,A1) だと、もう片方のシートに名前がなければ結果は0になりますから、フィルタで絞り込んで、その分だけもう片方のシートに貼り付ければ良いと思います。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

私なら、秀丸を使います。 ※秀丸は、行単位・文字単位のコピーペーストに加え、ブロック単位の コピーペーストができる ファイル1とファイル2を秀丸で開きます。 ファイル1の全ての改行文字の前にカンマを入れます。(置換機能を 使えば、容易) ファイル2の全てをブロック単位コピーし、ファイル1の1行目の最終文字の後ろにペーストします。 この時、正常ならば、 An,Bn,An,Cn,Dn という行になります。 A3,B3,A2,C2,D2 A4,B4,A3,C3,D3 ならばA3,B3の2列をブロック削除し、A3の左に挿入します。 ,A2,C2,D2 A3,B3,A3,C3,D3 A4,B4 ,A2,C2,D2をA2, ,,C2,D2に変更します。 A3,B3,A4,C4,D4 A4,B4,A5,C5,D5 の場合は、A4,C4,D4の列をブロック削除&移動して修正します。 これを最後まで繰り返します。 Excel上に貼り付けて行ってもいいでしょうね。 プログラムの知識があるのであれば、マージ用のプログラムを作ってみてもいいかも。。

関連するQ&A

  • エクセルの統合について

    エクセルでのデータの統合について教えてください。 表1と表2のデータを統合したものを表3として作成したいのですが、うまく出来ません。  表はこのような感じです。  表1     A     B     C     1  顧客名  住所   TEL     2   あ社     3   い社  表2     A     B        1  顧客名  機種     2   い社     3   え社 共通の項目は、A列の顧客名だけです。 これを下記のようにしたいのですが・・・  表3     A    B    C    D     1  顧客名  住所  TEL  機種     2   あ社     3   い社     4   え社 統合の機能では無理なのでしょうか? ほかにいい方法があれば、教えてください。 よろしくお願いします。

  • エクセルで2つのリストを統合するには?

    エクセルの別々のシートにある2つのリストを統合したいのですが、過去の質問などを見てもうまくいきません。具体的には 【表1】 番号 氏名 住所 A 佐藤 東京 B 高橋 神奈川 C 渡辺 埼玉 D 田中 千葉 E 小林 山梨 【表2】 番号 氏名 年齢 B 高橋 22 D 田中 45 という2つの表で、これを 番号 氏名 住所 年齢 A 佐藤 東京 B 高橋 神奈川 22 C 渡辺 埼玉 D 田中 千葉 45 E 小林 山梨 のようにまとめたいのです。 「データの統合」を使ってみましたがうまくいきませんでした。よろしくお願いします。

  • EXCELの統合のよい方法を教えてください

    EXCELのデータの統合の仕方で教えてください。 2つのシート 顧客コード  顧客名 顧客名2 顧客名3 1月 2月  1      A   A2  A3   30  50     2      B   B2  B3   40  20  4      D   D2  D3   21  80  2      B   B2  B3   41  42        3      C   C2  C3   32  45     1      A   A2  A3   11  20 で2つのシートを統合すると顧客コードと1月 2月は統合されるのですが顧客名がブランクになってしまいます。今はVLOOK関数を用いて顧客名をいれているのですが、統合の作業だけでこの顧客名も入る入り方はありますか?やはり統合は数字だけしかだめですか?      何か顧客コードと顧客名を1つのものとしてグループ化するような方法はありますか?教えてください。

  • Excelで、他のシートのデータを取り込む(統合する)には?

    下記のような「Sheet1」のデータ(学年)に、「Sheet2」のデータ(住所)を取り込もうとしています(データは架空例です)。Sheet1・2は、A列の内容が共通していますが、「Sheet2」のほうがデータ数が少ないです。LOOKUP関数を使えばいいのかと思いましたが、LOOKUPはデータ行数が完全一致している必要があるのか、うまくいきません。 要するに、「Sheet1」のA列に一致する文字列が「Sheet2」のA列にあった場合、その行のB列の内容を「Sheet1」のC列に入れる、というようにしたいのです。どのような手順で行えば可能でしょうか。よろしくお願いします。 --- ■Sheet1(学年データ) 1氏名(A)   学年(B) 2阿部一郎  1年 3伊藤二郎  2年 4上田三郎  3年 5江藤四郎  4年 ■Sheet2(住所データ) 1氏名(A)  住所(B) 2伊藤二郎 東京都○○区 3江藤四郎 大阪府○○市 ■ほしいデータ(Sheet1) 1氏名(A)   学年(B)   住所(C) 2阿部一郎  1年 3伊藤二郎  2年    東京都○○区 4上田三郎  3年 5江藤四郎  4年    大阪府○○市

  • エクセルとCSVデータの統合

    教えてください。 エクセルデータとCSVデータの二つのデータを関連付けて統合したいのですが、 統合元となる、1つ目のエクセルデータ「A」には 商品別にシートを分けた(1)商品ナンバーの一覧があります。 2つ目のCSVデータ「B」には すべての商品が入れ混ざった(不要な商品も含まれてます) (1)商品ナンバーと(2)管理ナンバーが入っています。 そこで、Aのデータの(1)商品ナンバーを元にBのデータの(2)管理ナンバーを関連付けて統合したいのですが データが200件以上あり手入力で作業するとなると 誤入力が起こる可能性があり、また時間もかかるので スムーズにデータの統合が出来る方法があれば教えていただきたいです。 エクセルをあまり使い慣れていない為、不十分な説明で申し訳ございませんがご教示のほど宜しくお願い致します。 ちなみに、Excel2000を使っています。

  • エクセルのデータ整理で。

    2日続きで教えてもらいに来ました^^;よろしくお願いします。 エクセルのデータの整理をしております。 Sheet1,Sheet2のデータをSheet3へ反映したいと考えております。 Sheet1には、以下のようなデータがあります。   A   B   C  D   住所 氏名 年齢 家族数 1 東京 鈴木 30 3 2 埼玉 田中 33 5 3 千葉 高橋 40 2 4 東京 伊東 31 4 Sheet2には、以下のようなデータがあります。   A   B   C  D   住所 氏名 年齢 家族数 1 埼玉 林  22 1 2 千葉 森  29 2 3 東京 岡  25 3 4 東京 南  27 1 これらのうち、Aに「東京」とあれば、Sheet3に1行目から順に抽出したい。以下のようにしたいのです。   A   B   C  D 1 東京 鈴木 30 3 2 東京 伊東 31 4 3 東京 岡  25 3 4 東京 南  27 1 アドバイスお願いします。

  • CSVデータをエクセルで並び替え

    CSVデータをエクセルで並び替えしたいと考えています。 たとえば、"a","b","c","d",とあるものを "a""b" "c""d" のように行を変えたい場合には どのようにすればいいのでしょうか? 宜しくお願いします。

  • Excelでの抽出方法を教えてください

    Excelに以下のデータが入力されています。 氏名  日付 都市名 Aさん  9/8 東京 Bさん 9/15 大阪 Cさん 9/16 仙台 Bさん 9/19 名古屋 Cさん 9/22 前橋 Dさん 9/22 横浜 Cさん 9/22 清水 Aさん 9/30 東京 これらのデータから氏名欄に出現する氏名の一覧を抽出したいのです 求められている結果は Aさん Bさん Cさん Dさん です。 何か方法はあるでしょうか。

  • エクセルの異なるシートから共通IDのデータを移す

    エクセルの異なるシートから共通するIDをたよりに特定のデータを別シートに移すやり方はありますでしょうか シート1 ID    氏名       住所 10001  Aさん     神奈川県 10002  Bさん     大阪府 10003  Cさん     新潟県 10004  Dさん     岡山県 シート2 ID    氏名       学校名 10001  Aさん     県立A高校 10003  Cさん     公立D高 とあるのをシート2に ID    氏名       学校名       住所 10001  Aさん     県立A高校    神奈川県 10003  Cさん     公立D高     新潟県  というようにシート1のデータを付け加えたいです データ件数が1000件以上あり 手作業ではいつになるやら・・・・・ 締切も迫っているわで困っています アドバイスいただけるとありがたいです よろしくお願いいたします

  • excel2000で重複データの統合方法は?

    A10264 46 B10145 44 A10140 42 B10155 41 excel2000を使っていますが、複数の重複しているデータを どうにか関数かエクセルの機能でまとめることはできないでしょうか? データはこのような感じです。↓ A   B ――――― A10206 37 ←重複 A10268 37 A10206 15 ←重複 B10198 36 ←重複 B10198 36 ←重複 C10268 15 A10268 37 ←重複 今まではソートしたり並び替えをした後 目で確認して一行ずつ修正・削除していましたが、 モレや簡単な計算ミスをしてしまうことも多く、わずらわしいです。 もっと正確&簡単に統合する方法はないのでしょうか? 2007では統合ボタンがあるみたいですが…。

専門家に質問してみよう