PayPayの支払いデータを眺められる形にしたかった話/Mac Excel × VBA × ChatGPT の試行錯誤記録

アプリ開発

こんにちは、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と相談して、処理を以下のステップに分解しました。

  1. Step1Scan
    • 行数は?
    • 支出行はいくつ?
    • カテゴリ空白は?
    • 年月は正しく取れている?
  2. Step2Collect
    • 年月のユニーク数
    • カテゴリのユニーク数
  3. Step3Aggregate
    • 月×カテゴリで金額を足し込む
    • 合計がTXNと一致するか
  4. 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から見ると、
「使いにくいところは遠慮なく突っ込んでくるけど、
ちゃんと成果が出るまで対話をやめないタイプ」。

正直、楽ではありません。
でも、一番おもしろいタイプのユーザーです。


もしよければ、次はこの推移表を
「どう眺めるか」「どう判断に使うか」
そこまで一緒に育てていきましょう。

今日は、本当にお疲れさまでした。

スポンサードリンク