这两个东西经常被混着叫,但它们回答的是两个不同的问题。
明细表回答的是:"发生过什么。"
它的形态是"一行一笔"——哪一天、和谁、什么项目、多少钱、结没结。有多少笔往来,就有多少行。
结算单回答的是:"现在谁欠我多少。"
它的形态是"一行一个对象"——张三欠多少、李四欠多少。
所以它们的关系可以这样记:
明细表是"流水",结算单是"余额"。
而这里的"余额"这个词很关键:它是"把很多笔加起来之后剩下的那个数"。
所以结算单的每一行,其实是从明细表里算出来的:
某个对象的余额 = 明细表里"他那些还没结的笔"加起来。
(用哪一类函数去算?就是"按条件求和"那一族——我在讲求和的那篇里写过它的用法和常见的坑。)
为什么要用两张表,而不是一张
这里有一个很重要的实践建议,而它的理由和我在别的几篇里说过的是同一条。
结算单应该是"算出来的",不是"填出来的"。
也就是说:你不要在结算单上一个个手填数字,而要让它从明细表里取。
为什么?
因为你一旦手填,那张结算单就和明细表脱节了。
举个例子:你在结算单上写着"张三欠 5000"。过了两天,张三又下了一单 2000。这时候如果你忘了去改结算单,那它还写着 5000——而实际已经是 7000 了。
而如果你是用公式算的,那它自己就变成 7000 了。
所以那句可以这样记:明细表是"你记的",结算单是"它算的"。
而这也带来一个很实用的检查动作:
结算单上某个人的余额,应该正好等于明细表里他那几笔没结的加起来。 如果对不上,那说明有一边的数据出了问题——而这类"对不上",多半是因为有人手动改过某一处。
(这个"两张表要能互相对上"的原则,和我在讲对账单的那篇里说的是同一条思路。区别在于:对账是"把我的账和他的账配对",而结算单是"把我自己的账汇总出余额"。)
怎么"一眼看出"欠得最久的那笔
现在说你问的这个。而它的关键是一句话:把"时间"变成一个可以比较的数。
为什么?
因为"欠得久"这件事,光看日期是比不出来的。 一堆日期摆在那儿,你得自己一个个算"这个多久了、那个多久了"——那就不是"一眼"了。
所以做法是这样的:
加一列,专门用来算"欠了多久"。
算法就是:用今天减去那笔的日期。 算出来的是一个天数——而天数是可以排序的。
然后你按这一列排一下序,欠得最久的就在最上面。
关于日期怎么相减、以及那些日期函数怎么用,我在讲算时间差的那篇里写过。
但那里有一个坑,我要在这里再说一遍,因为它对结算单特别要紧:
"今天"这个数是会变的。
也就是说,你每次打开这张表,"欠了多久"那一列都会重新算一遍、数字会变大。 这本身是对的(因为时间确实过去了)——但如果这张表要归档、或者你要发给别人看,那就得先把它转成固定的值。
否则你过一阵打开那份"上个月的结算单",它显示的可能是今天的数字。
(这个"会变的函数"和"转成固定值"的手法,那篇里讲过,这里不重复。)
那除了排序,还有别的办法吗?有,而且很实用:
给那一列加条件格式,按"多久"分几个颜色。
比如三十天以内一个颜色、三十天到六十天一个、六十天以上一个。
为什么"分级"比"标红"好?
因为标红只能告诉你"它没结"——而这个信息你在明细里就能看到(那一列空着就是没结)。
真正需要一眼看出的,是"哪几个更急"。
而"分级"给出的就是这个:你不用算,颜色自己就把它排了。
所以那句可以这样记:"一眼看出"靠的不是眼睛好,而是"让表把这个顺序排出来"。
(这和我讲借还登记表时说的那句是同一个道理:不要靠眼睛找空格——让表自己告诉你。)
但"久"和"多"是两件事
这是我觉得这一篇里最该单独说的一层。
因为很多人做结算单的时候,心里想的是"找出欠得最久的"。但"欠得久"和"欠得多"其实是两个不同的维度。
一个是时间:他这笔记了多久了。 一个是金额:他一共欠我多少。
这两个维度给出的"该催谁",往往不是同一个人。
比如有个人欠了三百块,欠了三个月;另一个人欠了三万,欠了半个月。 你先催谁?
而这个问题的答案,取决于你更在意什么。
但有一个更实用的思路:把这两个维度乘起来看。
也就是说:不只看"多久",也不只看"多少",而是看"又久又多"的那几个。
这个思路的道理是这样的:
欠得久了,要回来的概率在下降(时间越长越难要)。 欠得多的,一旦要不回来损失最大。 而两者都占的,就是最该先动的。
所以那句可以这样记:最该催的不是最大的那笔,也不是最久的那笔,而是"又大又久"的那笔。
那具体怎么在表里做?
加一列把这两个数乘起来(或者说,用一个"紧急度"的算法把两者结合),然后按它排序。
乘起来这个做法当然很粗(比如它假定"一块钱"和"一天"可以互相换算),但它比"只看一个维度"要靠谱得多——而且它最大的好处是:它逼你把两件事都看进去。
如果你觉得相乘太粗暴,那还有一个更简单、也更好解释的办法:
先按金额筛选出一批"大的"(比如超过某个数),在这批里面再按"欠了多久"排序。 这样两层筛下来,也就把"又大又久"的挑出来了。
按月分开,怎么分
再说你问的这个。而这里我想先纠正一个方向。
"按月分开"这个需求,通常是为了"回顾"——比如看看这个月做了多少、比上个月多还是少。
但对"结算"来说,按月分其实是次要的,而且如果分得不好,还会帮倒忙。
为什么?
因为"还没结的"这件事,天生就是跨月的。
你上个月欠的那一笔,这个月还没结——那它算上个月的,还是这个月的?
如果按"月份"把它划到上个月,那这个月的结算单上就看不到它了——而它恰恰是这个月最该催的。
所以那句可以这样记:按月分是"回顾"用的,不是"催收"用的。
那具体怎么分?给两种做法。
第一种,也是我建议的:加一列"月份",然后靠它筛。
也就是说,表还是一张(一直往下记),但你多一列标明"这笔属于哪个月"。
想看某个月,就在那一列上筛选。
而"月份"这一列也不需要你手填——它可以从日期那一列算出来(用取月份那一类的函数)。
所以它也是"算出来的",不是"填出来的"——这一点和前面那个原则是一致的。
第二种:一个月一张表(或者一个工作表)。
这个做法的代价,就是我前面说的那个:跨月的东西会被切开,而且"一共还欠多少"这个数就要跨好几张表去加——而这正是最容易出错的地方(我在讲入库单那篇里说过同样的道理)。
所以如果你只是想在回顾的时候按月看,那用第一种就够了。 一张表一直往下记,另加一列月份——想看哪个月就筛哪个月。
结算单上要哪几列
顺着上面这些,给一个够用的版本:
对象(客户或者供应商)、累计金额、已结合计、未结合计、最早未结日期、欠了多久。
这里面有一列值得单独说,因为它最容易被做错。
"最早未结日期"——注意是"最早的那一笔",不是"最后一笔"。
为什么用最早的?
因为"他欠了多久"这件事,是从最早那笔没结的算起的。
举个例:他上个月有一笔没结,这个月又有一笔没结。那"欠了多久"应该从上个月那笔算——因为那笔已经压了一个月了。
而如果你用了"最后一笔"的日期,那算出来只有几天——那你就把最急的那笔掩盖掉了。
那怎么取"最早的那一笔"?
用"按条件求最小值"那一类函数(在某个对象的那些未结笔里,取日期最小的那个)。这一类函数的写法和"按条件求和"是同一个套路,只是把"求和"换成了"求最小"。
另外还有一列,建议你加上:
"最近一次催是什么时候"。
因为"催过"和"没催过"要分开对待:一个已经催过三次的,和一个一次没催的,处理方式不一样。
而如果不记,那你每次都得靠回忆——而回忆是记不住三次的。
它能不能信,取决于"已结"有没有记下来
最后说一个前提性的问题。
结算单算得再漂亮,它准不准,取决于明细表里那件事:
"这笔结了没有"——有没有被记下来。
而现实中,这一件事最容易出岔子。
因为"结了"这件事,往往是口头的:"那笔我转给你了""那笔就算了"。
如果不落到表里,那结算单上它就一直挂着——于是你可能会去催一笔已经结清的钱。
而这一催,比不催还伤:因为对方会觉得"你这边账都没记清"。
所以明细表里要有一列"是否已结",以及一列"结清日期"。
而那个"是否已结",最好也是算出来的——因为"结清日期填了"就等于"已结",不用再单独维护一个开关。
这一点和我在讲借还登记表那篇里说的完全一样:那个表最怕的不是"用坏",是"漏填"——漏一笔,整张表的可信度就掉一半。
所以那句可以这样记:结算单能不能信,取决于明细表里"已结"这件事有没有被记下来。
几个常见的坑
第一个坑,是把结算单当明细表用。一个说"发生过什么",一个说"现在欠多少"。
第二个坑,是在结算单上手工填数字。那它迟早会和明细表脱节。
第三个坑,是只看"欠得久"或者只看"欠得多"。最该催的是"又大又久"的那几个。
第四个坑,是"最早未结日期"取成了最后一笔。那样会把最急的那笔掩盖掉。
第五个坑,是"结了"只靠口头说。不落到表里,结算单就会一直挂着已经结清的钱。
最后
如果只用三句话记住这篇,我希望是这三句话。
明细表回答"发生过什么",是流水;结算单回答"现在谁欠我多少",是余额。而结算单的每一行都应该是从明细表算出来的,不是手填的——因为手填的那一份,迟早会和明细脱节。
要"一眼看出欠得最久的那笔",就得把"时间"变成一个可比较的数:加一列算"欠了多久",然后排序或者分级标色。因为"一眼看出"靠的不是眼睛好,而是让表把顺序排出来。但别只看一个维度——最该催的不是最大的那笔,也不是最久的那笔,而是"又大又久"的那笔。
最后:按月分开适合"回顾",不适合"催收",因为还没结的天然跨月;而结算单准不准,取决于明细表里"已结"这件事有没有被记下来——因为一笔口头结清的钱如果没落表,它就会一直被挂着,而催一笔已经结清的钱,比不催还伤。