VBAを使って日報のデータを集計表に転記する際、月が変わると前月分のデータが上書きされてしまう問題に悩んでいる方も多いのではないでしょうか。この記事では、その問題を解決する方法を紹介します。
問題の詳細と発生原因
ユーザーが設定した3つのボタンで、集計表にデータを転記しています。各ボタンは、1ヶ月、3ヶ月、1年の集計に対応しており、それぞれ異なるタイミングでデータを集計するようになっています。しかし、月が変わると、集計表の前月分が上書きされ、データが失われるという問題が発生しています。
この問題の原因は、転記先のセル位置が固定されていることです。月が変わる度に、集計データを前月分と同じセルに転記してしまい、その結果、前月のデータが上書きされてしまいます。
問題解決のためのアプローチ
この問題を解決するためには、転記先のセルを動的に変更する必要があります。月が変わる際に、次の空いているセルにデータを転記する方法を取ることで、前月のデータが上書きされることを防ぐことができます。
VBAのコードを修正して、次の空いている行にデータを転記する方法を紹介します。
コード例: 転記先のセルを動的に変更する
Sub DataTransfer()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("集計表")
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
' 次の空いている行にデータを転記
ws.Cells(lastRow, 1).Value = "新しいデータ"
End Sub
このコードでは、`lastRow`変数を使用して、集計表の最後の行を取得し、その1行下のセルに新しいデータを転記します。
動的に転記先を変更する方法
月が変わるたびに、転記先の行を動的に変更する方法を説明します。まず、集計表の最後の行を特定し、その1行下のセルにデータを転記します。このようにすることで、毎月新しいデータを過去のデータに上書きすることなく追加できます。
また、集計表の範囲を変更したり、ボタンを押したタイミングで条件を設定することも可能です。これにより、データの転記をさらに柔軟に制御できます。
まとめ
VBAを使って集計表にデータを転記する際に、月が変わると前月分のデータが上書きされてしまう問題は、転記先のセルを動的に変更することで解決できます。上記のコード例を参考に、転記先のセルを自動で判断し、データが重複しないように設定しましょう。


コメント