• 締切済み

エクセルのVBAについて

初めて質問します。 VBA初心者で勉強中なのですが教えてください! sheet1に下記 顧客番号 物件名 4月 5月 6月 0 31 0 1111 神戸 1,200 1,300 0 31 0 1112 大阪 1,300 1,400 0 31 0 1113 名古屋 1,500 1,600 0 31 0 1114 熊本 1,600 1,700 0 31 0 1116 群馬 1,650 1,600 sheet2に下記 顧客番号 物件名 6月 0 31 0 1111 神戸 1,600 0 31 0 1113 名古屋 1,800 0 31 0 1114 熊本 1,900 0 31 0 1115 北海道 1,800 0 31 0 1116 群馬 1,700 の二つのシートがありsheet2のデータを全コピしてsheet1のデータに上書きで貼り付けたら 又はsheet3に下記完成形  顧客番号 物件名 4月 5月 6月  0 31 0 1111 神戸 1,200 1,300 1600  0 31 0 1112 大阪 1,300 1,400  0 31 0 1113 名古屋 1,500 1,600 1800  0 31 0 1114 熊本 1,600 1,700 1900  0 31 0 1115 北海道 空白 空白 1800  0 31 0 1116 群馬 1,650 1,600 1700 を作りたいのですが、なにかいい方法はありますでしょうか・・・ 今後も7月8月とデータは増えていきます(空白は空白セルです) 6月データがない所も残しつつ、新規に6月からデータができたとこも追加して 重複してるのはそのまま6月分を追加したい感じです。 わかりにくい説明かもしれませんが、ぜひお願い致します。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 外しているかもしれませんが・・・ >今後も7月8月とデータは増えていきます(空白は空白セルです) の部分は↓の画像のようにSheet1に月が連続で1行目の項目にあるとして、 Sheet2にSheet1のデータに追加したいデータがあるという前提です。 標準モジュールにコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() Dim i As Long, j As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") j = WorksheetFunction.Match(wS2.Cells(1, 3), wS1.Rows(1), False) For i = 2 To wS2.Cells(Rows.Count, 1).End(xlUp).Row Set c = wS1.Range("A:A").Find(what:=wS2.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then With c.Offset(, j - 1) .Value = .Value + wS2.Cells(i, 3) End With Else wS2.Cells(i, 1).Resize(1, 2).Copy wS1.Cells(Rows.Count, 1).End(xlUp).Offset(1) With wS1.Cells(Cells(Rows.Count, 1).End(xlUp).Row, j) .Value = .Value + wS2.Cells(i, 3) End With End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m

namonakimono
質問者

お礼

ありがとうございます! 理想どおりの動きになりました! 助かりましたm(_ _)m