• ベストアンサー

VBAでの重複データ統一についてです。

 いつもお世話になっております。VBA初心者です。 過去の質問で、2つのセルの重複データを一つのデータにする処理があったのですが、3つのセルの重複データを1つのデータにするやり方に苦戦しております。 (A列) (B列) (C列)  A社  鈴木   男性  B社  田中   女性  A社  鈴木   男性  B社  佐藤   女性  B社  田中   女性  A社  鈴木   男性      ↓↓ (A列) (B列) (C列)  A社  鈴木   男性  B社  田中   女性  B社  佐藤   女性  となるようにしたいのです。 サンプルソース等がありましたら、 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2のご回答と似ていますが、1票を投じる意味で (1)データを幸いにソートキーが3つまでなので 手作業でソートする。A,B,C列がキー。取りあえず質問の関連だけなら、優先項目、昇降関係なし。 (2)VBAで最下行(lastr)を知り set sh1=workasheets("sheet1") set sh2=workasheets("sheet2") maekey=sh1.Cells(1,"a") & sh1.cells(1,"b") & sh1.cells(1,"c") j=1 '---------- for i=1 to lastr key=sh1.Cells(i,"a") & sh1.cells(i,"b") & sh1.cells(i,"c") if maekey=key then else sh2.cells(j,"a")=sh1.cells(i,"a") ・・・ maekey=key j=j+1 end if next i

keyed
質問者

お礼

 imogasiさんには何度もご回答いただきありがとうございます。  今回もうまくいきました。

その他の回答 (2)

noname#102878
noname#102878
回答No.2

「過去の質問」を見つけることができたのであれば、それを載せるべきでしょう。 「過去の質問」を意識した質問者の考えと、まったく知らない回答者の考えにずれが生じます。 で、ソースコードじゃないですが、考え方だけ。 A列・B列・C列の優先順でソートする。 先頭行から最終行まで、1行ずつループ。 ループの中で、1つの[変数1]にA列とB列とC列の値を連結したものを入れる。 [変数2]と比べて、内容が違えば別シートに書き出す。 (最初の一発目、変数2の中身は空っぽです) 内容が同じなら何もしない。 [変数1]の内容を[変数2]に移す。 次の行を処理。 ってな感じでどうでしょうか。

keyed
質問者

お礼

 ご回答ありがとうございました。 何とかやりたい処理ができました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

列Dに、列Aと列Bと列Cを連結したものを放り込んで、それを対象としては?