日々の 売上データを毎日月次表に追加する

毎日売上データを集計用の月次表に追加する
データを追加する

リンクユニット


マクロ 58回

日々の 売上データを毎日月次表に追加する

毎日売り上げを集計して報告しなければならない表があってそのデータ数は日ごとに変わります。 その表を月次集計の表に 移したいというケースです。 日計の集計用のデータを月次集計に移動するということになります。 データが毎日どんどん追加されていく場合に、日計表の方では 可変の表のデータ範囲を 取得してそれをコピーするという操作があり、 月次集計の表の方では新規入力行を 見つけてそこに貼りつけるという操作をしてやるわけです。
(サンプルファイルは、こちらから マクロ19回サンプルデータ

日計表からデータの範囲を特定する

日計表からデータの範囲を特定するには、 どのようにすればよいでしょう。サンプルでは 範囲は A 2から G 27となっています。 A 2は固定で G 列の行数部分だけが変化します。
NAMAEマクロ1
そこで表の最終行を求めるには 特定のセル 例えば表の最下段のセル A1048576?などから Endプロパティ使ってデータのある場所へジャンプしてやればいいわけです。
NAMAEマクロ2
この場合、Rows.Countを使うこともできます。目的は表の最終行の取得です。
NAMAEマクロ3

最終行を取得し選択する

最終行に移動するには、Selectしてやります。ジャンプする元となるセルは何もシートの最下端セルである必要は特になくて、例えば毎日のデータが100件に満たない ことが確実であればその3倍ぐらいの A 300セルからアップしてもいいわけです。
Sub 最終行()
    Range("A300").End(xlUp).Select
    MsgBox "行番号は" & Selection.Row & "です。"
End Sub

NAMAEマクロ4
サンプルではMsgBoxを使って移動した行番号を表示しています。
NAMAEマクロ5
スポンサーリンク
スポンサーリンク

月次集計表では、最終行の次の行を取得し選択する

一方、月次集計表では、最終行の次の行を取得し選択する必要があります。 その場合取得した最終行から1行だけ 下に ずれるということでOffset を使うことができます。
NAMAEマクロ6

日計表のデータをコピーして続きに貼り付ける

最終行を変数として宣言します。 その方がコードが見やすくなるという利点もあります。
NAMAEマクロ7
日計表のLastRow1と貼り付け先のLastRow2を定義してやります。
NAMAEマクロ8
    Dim LastRow1 As Long
    Dim LastRow2 As Long
    LastRow1 = Sheets("日計表").Range("A" & Rows.Count).End(xlUp).Row
    LastRow2 = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
コピーして貼り付けるコードは1行で書けます。
    Sheets("日計表").Range("A2:G" & LastRow1).Copy Sheets("Sheet2").Cells(LastRow2 + 1, 1)

NAMAEマクロ9

売上データを月次表に追加するマクロ

では 完成したマクロを実行してみましょう。月次表の A333 が選択されて、 コピーしたデータが貼り付けられています。
NAMAEマクロ10
売上データを月次表に追加するマクロのコードは次にようになります。
Sub 続きに貼り付ける()
    Dim LastRow1 As Long
    Dim LastRow2 As Long
    LastRow1 = Sheets("日計表").Range("A" & Rows.Count).End(xlUp).Row
    LastRow2 = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("日計表").Range("A2:G" & LastRow1).Copy Sheets("Sheet2").Cells(LastRow2 + 1, 1)
End Sub
詳しく解説した動画もありますのでそちらも参考になさってください。