_このページでは、MFFマクロの付属機能であるACF(Account and Category Fixer)の使用方法を解説します。
1.ACF機能の動作の概念
_家計簿アプリの中には、インポートするデータに、アプリに設定していない費目・口座が含まれていると厄介な動作をするものがあります(ZaimやDr.Walletが代表例)。ACFは、そのような家計簿アプリ(ここでは仮にBとします)へのインポート前に、家計簿アプリ(元データ:Aとします)のデータに含まれる費目・口座を、家計簿アプリBの費目・口座に変換する作業を支援するツールです。↓に、この機能の動作を解説した図版を示します。

2.設定ファイル(**カテゴリーリスト.csv)の準備
_ACFを使う上でもっとも重要な作業です。ACFは、この設定ファイルの情報を参照して、口座・費目をMFF形式のワークシート上でプルダウンメニューで選択できるようにExcelに書式設定をするように動作します。
_↓は、Zaimをターゲットにしたシートの作成例です↓。これは筆者がZaimを自分なりに設定変更した結果に基づいて作成しており、Zaimの標準状態の費目構成とは異なりますのでご注意下さい。

_具体的な作成手順です。まず、Excelで空のワークブックを開き、以下のように入力していきます。
-
A1セルに”口座名”、B1セルに”カテゴリー”を入力。この文字列はACFが動作するときに参照するためユーザーが変更してはいけません。
-
A2セルから↓方向へ、Zaimに登録してある口座の名称を入れる(緑枠で囲った部分)
-
B2セルから↓方向へ、Zaimに登録してある支出カテゴリー(MFF形式で言う「費目甲」)を入れる(赤枠で囲った部分)。
-
C1セルから→方向へ、Zaimに登録してある支出カテゴリー(同上)を入れる(赤枠で囲った部分)。3.のカテゴリーの順番に合わせなくても構いませんし、ジャンル(MFF形式で言う「費目乙」)が無いカテゴリーであれば省略できます。
-
C2セルから↓方向に、C1セルに入れた支出カテゴリーの内訳となるジャンル(同上)を入れる。Zaimに登録している全てを入れる必要はなく、普段使っているジャンルだけでよい。並び順は、ユーザーが入力しやすいようにアレンジできます。
-
以下、D2セルから↓方向へ、E2セルから↓方向へ…と繰り返す。
-
B列に入力した支出カテゴリーの下に、収入カテゴリーを入れる(青枠で囲った部分)。
_なお、データの途中に空のセルは入れないでください。この設定ファイルを間違えると、いろいろと好ましくない事態が発生するのでご注意ありたく。Zaimに新しい口座を登録したり、費目の構成を変えた場合はそれに合わせて設定ファイルを修正する必要があります。
_全ての口座名称と費目構成を入力できたら、このワークシートを、**カテゴリーリスト.csvというファイル名で、ユーザーがACFでの作業に使用するフォルダ(作業フォルダと呼びます)に保存してください。**の部分には、1.で示した家計簿アプリの名称を、一字一句違えずに入れて下さい。この例ではZaimがターゲットなので"Zaimカテゴリーリスト.csv"です。拡張子が小文字であることにもご注意ありたく。また、ファイルの形式は”CSV(コンマ区切り)(*.csv)"を選択します(これでShift-JISでエンコードされる)。"CSV UTF-8 (コンマ区切り)(*.csv)"ではありませんのでご注意下さい。
_このような面倒なことをしているのは、MFFマクロのプログラムがこのファイル名に依存して作成されているからです。特に、前述のリストでDr.WalletがDrWallet(ピリオドが無い)になっているのはそういう事情によります。
3.ACF機能の操作
_ここから、具体的な操作について解説します。お題は、マネーフォワードMEからダウンロードした↓のデータをZaimに移行させる操作です。まず、MFFマクロを動作させてデータをMFF形式に変換します↓。

_↓18行目に、振替取引でありながら取引先欄に口座名(このデータは電子マネーの取引データなので、チャージ元となるクレジットカード、ということになる)が入っていない黄色のセルがあります。これはマネーフォワードMEのデータに特有の問題で(その事情も別途解説します)、このようなデータをZaimにアップロードすることはできません。
_この段階では特にすることは無いので、D1セルのドロップダウンリストで"Zaim"を選び、セルカーソルをD1セルに合わせた状態でACFマクロを動作させます↓。これを「起動動作」と呼んでいます。
_↓**カテゴリーリスト.csvを格納した「作業フォルダ」の在処をユーザーに問い合わせてきます。ただし、MFFマクロV2.07以降は、その作業フォルダのパス名がZ1セルに書き込んである場合には問い合わせません。
_↑の画面では最後に「Zaim変換リスト.csv」が無い、とMFFマクロ(のACF機能)が言い出していますが、このファイルはACFが自動作成するファイルなので、初めてACF機能を使用する際には出現して当然のダイアログです。ただの警告なので、そのまま【OK】を叩いて下さい。
_↓ACFが起動動作を終えた直後です。
-
A1セルが"MFF"から"ACF"に変化
「現在、このワークシートはACF機能で作業中である」ことを示している。 -
費目甲・費目乙の列がグレーに変化
ACFマクロでの作業中は、この2列はユーザーが弄るべきではないことを示している。 -
L・M列に文字列が入った
カテゴリーはZaimの費目にどのように変換するか未設定であり、水色は、MFF形式の費目甲・乙がすでにZaimに設定済みの費目と一致していることを示している。 -
口座名(振替取引の場合は取引先も)が水色か黄色になる
水色は、入力されている口座名がすでにZaimに設定済みの口座名と一致していることを示し、黄色は、入力されていないか、Zaimに設定済みの口座名と一致していないことを示している。
_とどのつまり、ACFマクロでの作業とは、この画面↑にある黄色のセルを水色に変えていくことなのです。
_なお、↑ではトリミングしてしまっていますが、この時点でACFは"Zaimカテゴリーリスト"と"Zaim変換リスト"という2つのワークシートを追加しています。これらのワークシートは、ユーザーはあまり触らない方がよろしいかと思います…。
4.ACFのユーザー操作と反復動作
_ここからは、ユーザーのExcel操作と、ACFの動作を繰り返して、データを整えていきます。
_まず、3行目の「趣味・娯楽/本」という費目に対して、この時点ではZaimのどのカテゴリー/ジャンルに変換するかルールが設定されていないため、L3セルに"カテゴリー”が入っています。これを"趣味・娯楽"と入力し、さらにM3セルを"漫画"と入力します↓。なお、入力は、ACFが前述の"起動動作"の際に設定したドロップダウンリストにより行います。
_そして、3行目の操作を終えたら、そのままACFマクロを動作させます。この動作を「反復動作」と呼びます。

_費目甲・乙に"趣味・娯楽/本"と入っている他の行にも、L列・M列に”趣味・娯楽/漫画”と入ったのがお判りいただけると思います↓。これがACFの「学習機能」です。ここで、まだ黄色になっているセルをドロップダウンリストで入力し、さらにACFを反復動作させると、これらの項目が確定していきます。

_ここで、4行目に注目してください。このデータの元であるマネーフォワードでは、書籍類に関する費目が「趣味・娯楽/本」しか無いため、内容欄に”業界雑誌"と入っていても、先の学習機能によってL・M列は”趣味・娯楽/漫画"になっています。これはさすがに困るので、M4セルの”漫画"を"書籍"に変更します。しかし、この操作をした直後にACFを反復動作させると、他の”趣味・娯楽/漫画"も全て”趣味・娯楽/書籍"に化けてしまいます。これはさらに困った事態になりますので、H4セルの”業界雑誌"にアンダーラインを付けてからACFを反復動作させてください↓。
_これにより、ACFは「元のデータに趣味・娯楽/本と費目が指定されていても、内容欄に”業界雑誌"と入っているなら、例外的に”趣味・娯楽/書籍"に変換する」というルールを学習します。

_なお、以上は費目の修正について解説していますが、口座名についても、同様の操作でカテゴリーリストファイルに記述した口座名から逸脱しないように修正することができます(MFFマクロV2.07以降で新設した機能です)。
5.ACFの最終動作とその後
_↓全ての黄色のセルが水色になったところで、A1セルにセルカーソルを合わせた状態でACFを動作させます。これを「最終動作」と呼びます。

_↓A1セルが"MFF"に戻り、L列・M列が全てクリアされました。ただし、D・E列の水色はそのまま(黄色のセルを残したままACFを最終動作させた場合は黄色)で、D2・E2セルはオレンジが残ります。MFFマクロは、D2セルがオレンジになっていることをもって「最低一回はACF機能が使用された」と判定し、ACF機能を使っていない状態でZaimおよびDr.WalletにインポートするためのCSVファイルを出力しようとした際にその旨をユーザーに警告するようになっています。
_なお、ACFは、最終動作の際に、初回動作の際にユーザーが指定した「作業フォルダ」において"Zaimカテゴリーリスト.csv"を上書きし、さらに"Zaim変換リスト.csv"(ACFが学習した中身を記録している)を保存します。開いていたワークシートはこの時点で削除されます。
_後は、MFF形式としておかしなことになっているデータを修正します。↓の例では、マネーフォワードMEに店舗名を示すデータ項目が無いが故に「内容欄」に店舗名が入ってしまっているところ、Zaimには店舗名が独立したデータ項目となっているため、そのように正しくデータが変換されるようにしています。

_↑データ修正が終わったらMFFマクロを動作させます。
_↓がZaimへのインポート用にデータ変換したCSVファイルの中身です。Zaimへのアップロードの操作方法については別途解説します。

6.ちなみに
_同じ「家計簿アプリ」と「作業フォルダ」を指定して再度ACFを動作させた場合は、その作業フォルダに"**変換リスト.csv”が存在するため、同じデータで動作させると↓のように全てのカテゴリーとジャンルが確定状態になります(H4セルの"業界雑誌"も、例外ルールが適用されていることを示す下線が引かれています)。

_ACF機能の操作について解説しました。なかなか複雑で使いこなすのが大変な機能ですが、MFFマクロによるデータ変換の前処理としては非常に重要ですので、ぜひご活用ください。