⭐ 觉得好用?收藏备用,下次直接打开
成员
添加账单
¥
付款人
参与人

AA 分账 是把一组人之间的多笔代付账单算清楚的工具:先记录每笔账”谁付的、谁参与、多少钱”,再自动汇总每个人的净额,最后给出尽量少笔数的结清方案(≤ 15 人时为全局最少)。聚餐、旅游、合租场景下,从前用计算器逐笔加减容易算错,到此处只需录入即可。

它解决什么

群里 5 个人一起出去玩,A 订酒店付了 1500,B 加油付了 300,C 团购了门票 600,D 请了一顿饭 480,E 啥也没付。每个人到底应该把钱给谁、给多少?逐笔均摊再两两抵消很容易算错。本工具把这件事压缩成两步:录入账单 → 看转账方案。

核心算法

每笔账单按选定参与人等额均摊:付款人 +金额,每个参与人 -金额/人数。所有账单累加后得到每人净额,正数 = 应收,负数 = 应付,全员之和恒等于 0。

结算阶段不是简单的”大对大”贪心:那种做法在 [-5,-4,+2,+3,+4] 这样的净额下会给出 4 笔,但实际最少只要 3 笔(拆成 {-5,+2,+3}{-4,+4} 两个子集分别结清)。本工具改成先分组再结算——把净额非零的人尽量切成多个”子集和 = 0”的最小组,最少转账笔数 = 总人数 − 子集组数,组内 |组|−1 笔贪心结清。

成员数算法结果
≤ 15 人位掩码 DP(3^N)保证最少笔数
> 15 人退回大对大贪心较少笔数(极少触发)

部分参与

不是每笔账都全员参与。打车只有 3 人坐、机场接送只 1 人——添加账单时取消勾选不参与的人即可。系统只在勾选的成员之间均摊,未勾选的人净额不动。

数据与隐私

说明
存储位置浏览器本地 localStorage,键名 toolbox_aa-split_state
是否上传不上传,全程本地计算
跨设备不同步,换设备或清缓存会丢失
留底复制结算清单粘到群里、备忘录或截图保存

局限与提醒

只支持等额分摊,不支持按人数权重(份数)拆分。对此类场景,把多吃的那一份作为独立账单录入即可。金额全程以整数分计算:每笔除不尽时由付款人优先承担多出的 1 分(若付款人也是参与人),还有剩余则按花名册顺序补足;这条规则只看账单的付款人和成员列表,与你点选参与人的先后顺序无关,确保净额、转账清单和原始总额完全自洽,不会出现”显示已结清但实际差 1 分”的情况。结果仅供朋友间结账参考,不构成财务凭据。

📍使用场景

  • 朋友聚餐 AA一人代付,多人均摊;逐笔记录后自动算出谁该把钱转给谁,尽量少几笔到账。
  • 旅行多日多人多笔跨多天的吃住行车票门票一起记,不同人付不同的单,最后一次性结清,不用一笔笔算。
  • 部分人参与打车只有 3 人坐、夜宵只有 2 人吃、机场接送只一个人去——按实际参与人单独分账。
  • 合租水电分摊一个月内房租水电网费等各种共用支出汇总,月底按实际参与的人结清。

常见问题

"尽量少的转账"是怎么算出来的?

先把每人净额算出来(正数 = 应收,负数 = 应付),再把这些净额尽量切成多个"子集和 = 0"的小组——组数越多,总转账笔数越少(最少笔数 = 总人数 − 子集组数)。每个最小零和组内部用贪心配对结算,正好用 |组|−1 笔搞定。≤ 15 人时用位掩码 DP 求出全局最少笔数;超过 15 人退到普通贪心,给出较少(不一定全局最优)的笔数。

一人付钱、多人参与,怎么记?

在"添加账单"里把付款人选成实际付钱的那一位,参与人勾选实际享用的人即可。默认参与人是全部成员,对全员均摊的场景一键加单。

部分人不参与某笔账单怎么办?

在添加账单时,取消勾选没参与的人即可。例如打车 100 元只有 3 个人坐,就把第 4 人从参与人里去掉,这笔账只在那 3 个人之间均摊。

怎么处理不平均分摊(如有人吃了双份)?

当前版本按选定参与人等额均摊。如有人多吃一份的情况,可以把"多出的那一份"作为单独一笔账单加入:付款人不变,参与人只勾选"吃多份的那位"——相当于给他单独记一份的费用。

数据会不会丢?关掉浏览器还在吗?

所有成员和账单都保存在你本地浏览器的 localStorage 里,关掉页面再打开数据还在。不会上传任何服务器,也不会跨设备同步——换电脑或清浏览器缓存会清空。重要场合建议复制结算清单到群里留存。

删除一个成员后他参与的账单怎么办?

会弹出确认框告知影响范围。确认后:他作为付款人的账单整笔删除(无法重算谁付的钱),其他他作为参与人的账单只把他从参与人里移除,金额由剩余参与人重新均摊。建议删除前先把账单结清并复制清单留底。