見出し画像

Money forwardの明細をExcelでキレイに管理したい

お金の管理にMoneyforward Meを使っているが、予算管理やその進捗管理をやろうとするには少々不便なので、Excelを使って管理をしたい。

月額500円のプレミアム会員になれば各月の明細をcsv形式/Excel形式でダウンロードできるが、無料会員でも明細のコピー&ペースト自体は可能だ。

実際に明細を引っこ抜いた(コピペなので「写した」が正確だが、、)際の
躓きポイントをまとめておく。
ただ基本的は非常に簡単なものだ。

1. 1列ずれに注意

実際にデータを「家計」タブ>「収入・支出詳細」からコピペする*と、
1行目の明細レコードだけなぜか1列左にずれる。

Moneyforward明細1

(解決策)
最初の明細レコードだけ切り取り→1列右に(他明細と列ごとの項目内容がそろうように)貼り付ければよい。

あと、あまり大した話ではないが、コピペする前に「日付が前の明細が上、後の明細が下」となるようMoneyforward上でソートをかけたほうが良い。
月が終わるたびに継ぎ足し継ぎ足しでMoneyforwardの明細をExcelに転記するので、各明細の日付順をきれいに並べるためだ。

*「日付」列から「コメント」列までの内容を範囲していするとうまくいく。

2.振替項目に注意

さらに明細をたどっていくと、2行がセル結合されているものがあることがわかる。

Moneyforward明細2

マスキングされていない明細名からもわかるように、口座振替などMoneyforwardに登録されている保有金融機関同士でのやりとりがこのように記載される。

(解決策)
私の場合はこれは削除している。Moneyforward上でもグレーアウトされており、保有金融資産の計算の対象外となっている。

ちなみに、プレミアム会員の場合はキレイに明細がわかれた状態でダウンロードができる。また、このような資産計算の対象外の明細がわかるよう、「計算対象」フラグを持った状態でデータ抽出ができる。

3.項目名の半角スペースに注意

明細の体裁を整える作業はまだ終わらない。
少しだけ見栄えをよくした下の画像を見てもらいたい。

Moneyforward明細3

J4セルにカーソルが当たっている。関数が

=LEN(F4)

とあるので、F4セルの文字数を数えていることがわかる。
F4はとは「収入」だ。2文字。見間違えるはずがない。

そこでF4セルを編集モードにすると原因がわかる。

Moneyforward明細4

項目名の後ろに半角スペースが入っている。

コピペの場合、「大項目」「中項目」(要は家計簿の費目)にそれぞれ半角スペースが混ざっているようだ。

必ずしも対策しないといけないわけではないが、後で項目別に集計することを考えると少々データとして扱いづらいのでスペースは消しておきたい。

(解決策)
Substitute関数でスペースを""に置き換えた*。
画像では修正後の項目名をL・M列に、文字数をN・O列に追加している。

Moneyforward明細5

元の項目名に含まれる「半角スペース」を何もない状態に置き換えたいので

=SUBSTITUTE(F4," ","")

とすればよいだろう。
N・O列で念のため文字数を計算したが、問題なさそうだ。

*項目名の途中で半角スペースを使っている場合は、Substitute関数を使うと
2か所のスペースが削られてしまう。
要は最後のスペースを削ればいいので、LEN関数とLEFT関数を組み合わせた数式で対応すればよい。
元の項目名(スペース含)の文字数より1文字だけ少ない文字列を、
元の項目名からLEFT関数で取得すればよいだろう。

4.日付形式に注意

最後に明細の日付について。

コピペだと「09/25(金)」のように曜日が混ざった形式となり、このあとさらに加工・集計することを考えるとあまりよろしくない。
曜日を抜いたうえで、西暦もつけておきたい。

(解決策)

Moneyforward明細6

これも大したものではない。
・曜日を抜く
・「2020/」という文字列を日付データへ追加する

Q列ではまず曜日を抜くために

=LEFT(B4,5)

としてB列「日付」データのうち左から5文字だけを抽出している。
画像からわかるように、1桁の月の場合も「09」と表現されているのでこの方法で問題ない。

さらに、Q列では月日情報のみ表現されているので、R列で

="2020/"&Q4

と「2020/」という文字列を頭に追加している。これにより、

09/25(金) → 2020/09/25

という形に変換することができた。

5. 最後に 暫定的な対応策

先ほどの画像のS列に「Datevalue」という列を追加している。
R列(2020/09/25)に対してDATEVALUE関数を適用することで、1900/01/01を「1」とした場合の日付の通し番号を付与している。

後続作業として中項目別・日付期間別の金額集計を行っている。
例えば「教養・教育」の「書籍」という中項目は、2020年1月1日~31日では30,642円使用していることがわかる。
ちなみに、この期間中に「書籍」の明細レコードは9件存在したので、それらの各金額を集計していることになる。

Moneyforward明細7

(諸事情ありPivotテーブルは使用しないことにしている)

1.~3.でデータをキレイにしている(データクレンジング、と言うのか?)ので、集計はそれほど難しくないはずだが、
なぜか期間指定の集計が「2020/01/01」形式ではうまくいかなかった

そのため、各日付にDATEVALUE関数をあてて、通し番号の数字の大小で期間指定をしている。
集計自体は正しくできているが、あまりきれいなやり方ではない。

ここは未だ原因がよくわかっていないので、おいおい修正していきたい。

この記事が気に入ったらサポートをしてみませんか?