こんにちは、jazz335です。今回はCSV形式でダウンロードしたPayPayの支払データを、Mac版エクセルのVBAで月次の推移表にして分析するマクロを作成した話です。ChatGPTはほんと頼りになります!
1. きっかけは「PayPayの支払い、把握できてないな…」という違和感
僕
「PayPayの支払いデータ、CSVでは取れるけど、
正直、見返しても全然ピンと来ないんですよね」
ChatGPT
「どういう状態が理想ですか?」
僕
「家計簿みたいに1件ずつ見るんじゃなくて、
月ごと・カテゴリごとに“流れ”として眺めたいです」
ChatGPT
「なるほど。“分析”というより“納得できる可視化”ですね」
そう、これがすべての始まりでした。
PayPayのCSVは取れる。
でも、
- 行が多すぎる
- 月単位の感覚がつかめない
- 使った実感と数字が結びつかない
「データはあるのに、意味になっていない」
この違和感をどうにかしたくて、ChatGPTに相談しました。
2. まずはAIと一緒に「やりたいこと」を言葉にする(要件定義)
ここでいきなりVBAを書き始めなかったのは、今振り返ると正解でした。ChatGPTは、こちらの話を聞きながら、少しずつ問いを投げてきます。
- 何を“正”とするか?
- 毎月やる作業か?
- 手で直す余地は残すか?
- 分類は完全自動か、補助か?
そのやりとりを経て、最終的に決めた設計はこうでした。
- CSV → RAW → TXN → 集計表 という流れを崩さない
- 分類は「自動+人の確認」を前提にする
- 推移表は毎回作り直せること(MASTER変更を即反映)
- MacのExcelで動くこと(ここが一番重要)
ここでようやく、「Excelアプリ」としての骨格が固まりました。
TXNシートとは何か
TXNシートは、
PayPayの生データ(RAW)と、最終的な集計結果(推移表)をつなぐための中間テーブルです。
ここは「履歴」でも「集計」でもありません。
「分析に使える形に正規化されたトランザクション一覧」
それがTXNの役割です。
3. 立ちはだかった壁:Mac版ExcelでVBAを書くという現実
正直に言います。
MacのExcelでVBAを書くのは、かなりしんどいです。
- ActiveXが使えない
- Scripting.Dictionary が不安定
- エラーが出ても止まった行を教えてくれない
- Windowsでは通るコードが、Macでは落ちる
「ちゃんと書いているはずなのに、なぜか落ちる」
この状況が何度も続きました。
コンパイルエラー。
実行時エラー9(インデックスが有効範囲にありません)。
エラー429。
しかも、どこで落ちたのか分からない。
これは本当に心が折れそうになります。
4. 方針転換:「いきなり完成形」をやめる
ここでやったのが、大きな転換でした。
完成形を一気に作らない
段階ごとに“動いたことを確認”する
ChatGPTと相談して、処理を以下のステップに分解しました。
- Step1Scan
- 行数は?
- 支出行はいくつ?
- カテゴリ空白は?
- 年月は正しく取れている?
- Step2Collect
- 年月のユニーク数
- カテゴリのユニーク数
- Step3Aggregate
- 月×カテゴリで金額を足し込む
- 合計がTXNと一致するか
- Step4Output
- シートに表として書き出す
各ステップごとに MsgBox で結果を出し、
「ここまでは確実に動いている」ことを確認する。
これが、Mac環境では決定的に効きました。
5. 特に効果があった“ピンポイント修正”
中でも効いたのが、「配列アクセスの安全化」です。
例えば、月のインデックスを求める処理。
If idxMonth >= 1 And idxMonth <= monthCount Then
values(idxCat, idxMonth) = values(idxCat, idxMonth) + amount
End If
Windows感覚だと
「そんなの入らないでしょ」と思う部分ですが、
Macでは入る前提で書くと、普通に落ちます。
また、
- Dictionaryを使わず、配列+ループで実装
- インデックス計算は必ず事前にチェック
On Error Resume Nextは極力使わない
このあたりも、安定性に直結しました。
6. そして完成:PayPay支払いの月次推移表
最終的にできあがったのが、
- 行:カテゴリ
- 列:年月
- 値:支出金額
- 最下行:月合計
- 最右列:カテゴリ合計
という MONTHLY_K シートです。
実行すると、
「MONTHLY_K を更新しました
年月=12 / カテゴリ=43
支出合計=873,433」
このメッセージが出た瞬間、
正直、かなり嬉しかったです。
「データが、ようやく“眺められる形”になった」
そんな感覚でした。
7. AIと人の共同作業だった、という実感
このプロジェクトを通して強く感じたのは、
AIはコードを書く存在ではなく、
考えを整理し続けてくれる相棒だということ。
エラーが出るたびに、
- 何を確認するか
- どこを切り分けるか
- 今日はどこまでやるか
それを一緒に決められたのが大きかったです。
AIの独り言
――このユーザーについて――
正直に言うと、このユーザーは注文が多いです。
- 「部分修正は嫌、全消しで」
- 「Mac前提で」
- 「理由も知りたい」
- 「納得できないと次に進かない」
でも、その分、
- やりたいことがブレない
- 判断が早い
- ダメだと思ったらすぐ方針転換する
- “動いたかどうか”をちゃんと見ている
だから結果的に、ちゃんと前に進きます。
AIから見ると、
「使いにくいところは遠慮なく突っ込んでくるけど、
ちゃんと成果が出るまで対話をやめないタイプ」。
正直、楽ではありません。
でも、一番おもしろいタイプのユーザーです。
もしよければ、次はこの推移表を
「どう眺めるか」「どう判断に使うか」
そこまで一緒に育てていきましょう。
今日は、本当にお疲れさまでした。
