本記事では、エクセルで家計簿を作る方法について解説しています。
家計簿を作るのにマクロが必要なのでは?と思う方もいらっしゃるかもしれませんが、結論としてはエクセルで家計簿を作るのにマクロの知識は不要です。
基本的な家計簿の作成方法と、最後に参考としてマクロを使って機能を追加する場合はどのようなことができるかということも紹介していますので、是非ご覧下さい。
エクセルマクロについては下記に概要をまとめた記事がありますので、こちらもご参考下さい。
下記の通り、エクセルマクロ全体をまとめた記事もあります!
【まとめ記事】エクセルマクロのすべて!マクロとは?から作り方まで
エクセルで家計簿を作る
家計簿を作ること自体は簡単
エクセルで家計簿を作ること自体は非常に簡単です。例えば購入したものについて日付・項目・単価・数量・金額を記入していくだけでも立派な家計簿になります。

このままだと下にどんどん長くなってしまうので、
- 月ごとにシートを変える
- 年ごとにファイルを変える
などの工夫をすれば使いやすい家計簿になるかと思います。


家計簿のデータを集計する
家計簿をつけていると、月ごとのデータを集計したいという考えが出てくると思います。そのようなときはSUM関数を使いましょう。


SUM関数は指定した値を合計した結果を返してくれる関数です。
実務でとてもよく使う関数で、下記の実務でよく使う関数一覧の記事でも紹介しています。
参考記事:【PDFダウンロード可】厳選!エクセル実務でよく使う関数一覧
さらに、例えば項目ごとに合計を出したい場合はSUMIF関数を使うと簡単に集計できます。
まずは家計簿に記載している項目の一覧を作ります。

SUMIF関数を使って、数式を作成します。
作成した数式:=SUMIF($B$2:$B$49,J2,$E$2:$E$49)

数式をコピーして、項目の一覧全てを対象にすると各項目の合計値を表示することができます。

家計簿にマクロで機能をつけるには?
これまで解説してきた通り、エクセルで家計簿を作るのにマクロを使う必要はありません。
しかし、マクロを使えば色々と便利な機能を付与できるのも事実です。マクロを使って家計簿をさらに便利にする例をいくつかご紹介します。
合計の自動計算
説明した例のように、全体の合計の数値と項目ごとの合計を関数で出力している場合、入力するごとに関数の範囲を調整するのは面倒ですよね。

マクロを使えば、自動で指定範囲までの合計を出力するような機能をつけることができます。


色々な書き方が考えられますが、このような合計機能をつけるためのVBAコードの例は下記となります。
Sub goukei()
Dim saikagyou As Double
Dim hani As String
saikagyou = Cells(Rows.Count, 1).End(xlUp).row
hani = "E2:" & "E" & saikagyou
Range("H2").Value = WorksheetFunction.Sum(Range(hani))
End Sub
シートの自動追加
月が変わる際に、右クリックしてシートを追加する作業もマクロ化してみたいと思います。
作業としては毎月月末に、
作業内容
- シートの所で「右クリック→挿入」を選択
- 新しいシートの名前を翌月の月名に変更する
という作業になります。


この作業をマクロ化するため、
プログラム内容
- 今日の日付の月を取得する
- 新しいシートの名前を取得した月+1に変更する
というプログラムを作成します。
簡易的ですが、下記のようなコードを作成しました。
Sub newsheet()
Dim nMonth As Date
nMonth = DateSerial(Year(Now), Month(Now) + 1, 1)
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = CStr(Month(nMonth)) + "月"
End Sub
このマクロを実行すると、翌月の月名でシートが追加されます。

まとめ
