之前比对用过几款记账软件,其中比较推荐的是 Moneywiz、Moze 和 Money Pro。之后就一直在用 Money Pro,日常记账都还 OK,尤其是强大的 Widget,可以迅速地将金额 / 账户 / 分类录入,一笔记账就完成了。
不过,快到了年底,当我想做一下回顾和报表的时候,有了想换回 Moneywiz 的念头。虽然 Money Pro 也有报表功能,但是自定义程度总归还是受限(不是没有,是受限),看个大概没问题,只是更细化的需求就无法实现(例如查看过去 6 个月的收入没问题,但是按照每月细分看收入趋势,就无法实现)。但 MoneyWiz 就可以定制这种需求的报表,最重要的是可以将这种有筛选的报表机制保存下来。
还是直入主题吧。
说明:
- 之前交流中发现有因为不会处理 CSV 而手动输入了一年流水的案例,这也是为什么我要写这篇文章。其实 CSV 并不可怕,就当作是 Excel 表格而已,至少此案例没那么复杂。
- 在本实例中我用 Numbers 来处理 CSV。原因是在 macOS 里面,我用 Excel 打开导出来的 CSV,卡的简直不能用,不知什么原因。而用 Numbers 就可以顺利读取编辑。在 Windows 下使用 Excel 情况如何没有实测。
- 在 Money Pro 导出 CSV 的时候,如果语言为中文,导出来的 CSV 会有一堆乱码,而语言为”英文”时,一切正常。因此下面在处理 CSV 时遇到的关键词,都是英文,请谅解。
两种记账逻辑
起初我天真地以为,从 Money Pro 导出 CSV,再在 MoneyWiz 里面导入 CSV 就万事大吉了。但毕竟是两个平台,他们有自己不同的记账逻辑。
简单总结就是,Money Pro 通过一个叫做「Transaction Type」的选项来区分收入 / 支出 / 转账等操作。因此在金额这一项里面,收入和支出的金额都是显示正的,实际的正负是通过交易类别里面的「收入」或「支出」来判别。但 MoneyWiz 里,是通过这个金额前面的正负号来判断是收入还是支出的,并没有一个「Transaction Category」来辅助。由于这个根本性的不同,导致了 Money Pro 导出的 CSV,不能粗暴的导入到 MoneyWiz 里面。不过进行一下批处理,再拿着 MoneyWiz 可读的 CSV 导入就可以了。
所以处理 CSV 的核心,就是处理「Transaction Type」这一项里面的内容。
处理原始 CSV 文件
一句话概括:由 Money Pro 的记录逻辑,转成 MoneyWiz 的记录逻辑。
日期(Date)
如果不处理日期,在导入 MoneyWiz 的第一步就会卡住,报错说日期格式不符合,然后只能退回重来。
原因在于导入 MoneyWiz 时,它只能导入日期,不能导入时间,并且导入的日期还要符合格式要求,才能成功,所以第一步先要处理 Date 这一栏。全部框选,将日期改为 YYYY/MM/DD
即可。
金额(Amount)
通过观察两个软件导出的 CSV,我发现 MoneyPro 将货币符号直接附在了 Amount(金额)里面,而 MoneyWiz 则是有专门的一类 Currency(货币)来区分货币种类。因此要运用 Numbers 里面的功能”查找与替换”,将 CN¥
替换为空。处理起来很容易,因此我没有试过未处理会怎样,也许也可行。
这里仅适用于单一货币数据,即两个软件都设置了一种货币。如果是多货币,我猜测应该需要更精细化的处理,比如在原始 CSV 里面添加一栏「Currency」,然后将具体货币种类附好。
开户(Opening Balance )
在 MoneyWiz 开好账户,名字不一定完全一致,但是数量只能多不能少。按照 Money Pro 里各账户的 Opening Balance(开户余额)设定好 MoneyWiz 的初始金额,然后将 CSV 里「Opening Balance」那一列删除。之后在导入的时候会有个选项卡,将两个软件之间的账户一一对应(名字完全相同的会自动对应)。
支出 (Expense)
因为 MoneyWiz 里面通过 +/-
来判断支出和收入,而 MoneyPro 里面的金额全部为 +
,所以要将支出相关的项加上一个 -
, 让 MoneyWiz 可识别。
使用 Numbers 里面的「快速过滤」,将所有的 Expense 筛选出来。
然后全选,在右边栏「单元格-数据格式-自定格式」,在文本前面加一个 -
即可。
这样子,所有的支出项就都有负号,那么 MoneyWiz 就真的知道,这个金额,是支出了。
收入(Income)
因为收入本身即符合要求,所以不用处理。
转账(Money Transfer)
Money Pro 里面有「Account/Account (to)」,对应了 MoneyWiz 里面的「Account/Transfers」,只有在涉及到转账的时候这两项才会同时出现内容(即转出账户和转入账户)。知道这个是要在之后导入的时候选择对应项。
但不同的是 MoneyPro 里面的主体 Account 是转出账户,而 MoneyWiz 里面的 Account 是转入账户。这个关系理来理去会很绕,觉得烦可以直接照下面的做就是对的了:
与「支出」操作相同,在金额前面加上 -
负号,导入之后就是正确的。
并在之后的导入设置中,Account 对应 Account,Account(to) 对应 Transfers 即可。
余额调整(Balance Adjustment)
前面提到了 MoneyPro 通过「Transaction Type」来判断收入和支出,金额全为正数。但余额调整是个例外,它用正数表示收入,()
来表示支出。因此只需将单元格的格式改为数字,即用 -
表示即可被 MoneyWiz 接纳。
分批导入
最终修改好的 CSV 文件别急着导入,我之前直接全部导入会莫名其妙出现一个很愚蠢的 bug,就是金额为 40.00 的项目,导入进去变成了4000.00,即所有的金额都扩大了 100 倍,可能又是格式有关的问题,MoneyWiz 识别 40.00 为 4000,然后又加了 .00 进去。我分别试了几次都解决不了。看了一篇文章是讲随手记导入 MoneyWiz 的 ,原作者把 CSV 拆分了分批导入,我就也试了一下,竟然没有这个问题了。所以建议将 CSV 按照「支出 / 收入 / 余额调整 / 转账」分为四个表格,导出独立的 4 个 CSV 文件,分批导入操作。
在导入 CSV 的时候,根据不同的类型来调整第一个面板。后面的部分大家应该都懂,就不再赘述。
> 下载少数派 客户端、关注 少数派公众号 ,让你的生活更精彩 🎉
> 特惠、好用的硬件产品,尽在 少数派 Pi Store 商店 🛒