Home > Excel VBA Macro フロー制御 > FAQ

注文データを顧客名ごとで1行にまとめるには?

Question 1307.1 Excel VBA Borad (掲示板)より Previous Next
右図のデータを、注文者氏名ごとで1行にまとめる(下図参照)マクロを作りたいのですが、勉強不足でうまくできません。
Excelのバージョンは2010です。
わかる方がいらっしゃいましたら御教授お願い申し上げます。
m(__)m

Answer   2013.7.3 永井善王
繰り返し処理のマクロですが、最初から全部の処理を考えると、こんがらがってきて挫折しやすいです。
よって、ひとまず、データの氏名が同じうちはまとめ表のA列の同じ行に、氏名をコピー貼り付けするだけのマクロを完成させてから、次の処理を追加するとよいかと思います。
もう少し詳しく説明してあげた方がよいのでしょうが、あいにく今、時間の余裕がないので、サンプルとなるマクロを作っておきました。
マクロの中では、提示された右図を
Worksheets("データ") 、同じく下図を Worksheets("まとめ") としています。根気よく読み解いて、わからない点が出たら再質問してください。
Sub 注文データを顧客名ごとで1行にまとめる()
    With Worksheets("データ")
        .Activate
        下端行 = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
        貼付行 = 1
        For 行 = 2 To 下端行
            If .Range("A" & 行) = "00" Then
                貼付行 = 貼付行 + 1
                .Range("B" & 行).Copy
                Worksheets("まとめ").Cells(貼付行, 1).PasteSpecial _
                    Paste:=xlPasteValues
                貼付列 = 2
            Else
                .Range("C" & 行 & ":E" & 行).Copy
                Worksheets("まとめ").Cells(貼付行, 貼付列).PasteSpecial _
                    Paste:=xlPasteValues
                貼付列 = 貼付列 + 3
            End If
        Next
    End With
End Sub

 

Excel VBA Macro

Excel DownLoad