商业综合体电费分摊:四步做到能上会、能对账
分摊算错,九成不是算法问题,是台账问题。总表和分表的关系没连对、倍率漏了一个、换表没标注——算法再正确,出来的数也是错的,而且看起来完全正常。这篇讲的是把数算对的那四步,以及三个最容易翻车的地方。
第一步:把表的关系画成一棵树
分摊的本质是在一棵树上做减法。这棵树只有一种合法形状:总表 → 中间层(楼层、区域、母线)→ 末级表(租户、公区设备)。每条记录的「上级表编码」就是它的父节点,没有上级的那一行是根。
三个必须守住的规矩:
- 上级表必须存在。指向一个不存在的编码,这棵子树就断了,下面所有表永远摊不出去,而报表不会报错——它只会少算。
- 不能成环。A 的上级是 B、B 的上级是 A,递归汇总时要么死循环,要么被"防重复"逻辑吞成 0。
- 虚拟表也要有上级。虚拟表通常用来做"应收"或"冲抵",它是数学上的节点,不是物理表,但它在树上的位置必须完整。
如果你手上的台账没有「上级表编码」这一列,那就不是台账,是一张表清单。先补这一列,其它都往后排。
第二步:先体检台账,再谈分摊
以下四类错误会静默地把数算错,而且每一类都有"看起来很正常"的伪装:
倍率漏乘
带互感器的表,用量 =(本期读数 − 上期读数)× 倍率。倍率漏了,用量差 20 倍、40 倍、80 倍。最容易发现的办法:拿(读数差 × 1)去比当期用量,正好相等的那几行基本就是漏乘。
读数回退
本期读数比上期小。多是换表或回零,但如果没在备注里标注,就会被算成负用量——负用量进分摊,谁都不信这张表。
用量与读数勾稽不上
用量填的数,和(本期 − 上期)× 倍率算出来的数对不上。这不是舍入误差,是有人手工改过或抄错行。
计量性质、计费属性为空
空着,就没人知道这块电该摊给公区还是租户、该用商业电价还是居民电价。空值的表最后都靠人拍,拍出来的数对不上账。
这四类我在台账体检工具里做成了自动检查,粘进去当场出结果,不用装东西、数据不上传。体检完再谈分摊,顺序不能反——脏台账上做分摊,等于在错的数上做除法。
第三步:定口径——三种常见摊法
这一步没有标准答案,只有合不合约。三种主流做法和它们各自最容易出错的地方:
| 摊法 | 怎么摊 | 最容易出的问题 |
|---|---|---|
| 按用量比例 | 损耗按各表实测用量占比分配 | 用量小的租户觉得不公平;空置单元用量为 0,摊不到损耗,损耗全压给在营商户 |
| 按面积比例 | 损耗按建筑面积或计费面积分配 | 面积是静态数据,一旦物业台账和合同面积不一致,每个月都在错;大面积低能耗的业态(仓储)承担过多 |
| 混合:先按表、余额按面积 | 能计量的部分按表,无法计量的公区按面积 | 口径最接近公平,但要求台账能清楚区分"可计量"和"不可计量",最先崩的是分类边界 |
两条实操建议:
- 口径写进合同或管理规约,不要写进 Excel。 Excel 里的公式每年换人维护一次,合同里的条款不用。
- 同一期只能用一种口径。混用(这栋按面积、那栋按用量)可以做,但必须在报表上按楼栋标清楚,否则一次对账就要解释半天。
第四步:复算金额,峰谷平尖不能用一个平均价
这是最直接的钱错。分时电价有四到五档,很多人图省事拿"平段价 × 总电量",或者拿"月度平均单价 × 总电量"。这两种做法在下面这个例子里分别差多少:
| 时段 | 电量(kWh)* | 单价(元)* | 电费(元) |
|---|---|---|---|
| 尖 | 100 | 1.20 | 120.00 |
| 峰 | 200 | 1.00 | 200.00 |
| 平 | 500 | 0.70 | 350.00 |
| 谷 | 1,200 | 0.40 | 480.00 |
| 合计 | 2,000 | 隐含单价 0.575 | 1,150.00 |
* 电量为假设值,单价为示意值,不对应任何地区的现行电价。实际复算必须用你账单上的分段电量与分段单价。
如果按平段价 0.70 元乘总电量 2,000 kWh,得到 1,400 元,比正确值 多收 250 元,偏高 21.7%。反过来,如果谷段电量占比很高,用平段价又会少收。分时电价下,任何“平均价乘总量”的做法都是错的,因为它把"用了多少"和"什么时候用的"这两件事合并了。
复算顺序固定:① 分段电量 × 分段单价 = 分段电费;② 各段求和 = 总电费;③ 总电费 ÷ 总电量 = 隐含单价(只用于对外报价或对标,不要拿它回头算电费);④ 别忘了账单里可能还有基本电费、力率调整、附加费——这几项在台账里通常没有,必须单独对。
损耗必须单列,不能"摊掉了就算平"
总表用量减去各分表用量,差额里有三样东西:线路损耗、没有装表的公区用电、计量误差。它们性质不同,但没人能分得清,所以实务上合成一个数:损耗。
闭合 ≠ 正确。损耗摊完以后加总正好等于总表,只说明算术没漏,不说明台账没错。一个断链的子表、一个漏乘的倍率,都能让加总依然漂亮。
所以报表上必须同时出现三个数:总表用量、各分表合计、损耗(含损耗率)。损耗率高得离谱(比如超过 10%)说明拓扑或读数有问题,这时候不该急着摊,该先回去查。差额为负(分表加起来比总表还大)就更严重:一定有一处重复计量或读数错误,此时一律停止分摊,先核对。
换表与回零:两段式,不能按一台表算
换表当期的用量必须拆成两段:旧表末次读数 − 旧表上期读数,加上新表本期读数 − 新表起始读数。直接把新表读数减旧表读数,会得到一个巨大或负的用量。
制度层面同样重要:换表必须在台账备注里标注,注明换表日期、旧表止码、新表起码。没有这条备注,任何体检工具都只能把它当"读数回退"报警——工具不知道你是换表还是抄错。
上线前自查清单
- 每条记录都有上级表编码,且上级表在台账里存在
- 没有 A→B→A 这样的环
- 带互感器的表,倍率都填了且大于 0
- 倍率漏乘检查:(读数差 × 1)与用量相等的行已逐一核对
- 读数回退的行都有"换表/回零"备注,且按两段式算过
- 用量与(读数差 × 倍率)逐行勾稽过,差异都有解释
- 计量性质、计费属性无空值
- 各分表合计与总表的差额(损耗)已量化,并写明损耗率
- 金额按分时段单价复算过,没有用平均价乘总量
- 分摊结果加总闭合,舍入残差归入哪一行写在报表脚注上
十条里任何一条没做到,这张报表就不该拿去开会——不是怕被问,是一旦有人当场拿计算器核,后面所有数都不会被信任。
两个能立刻用的工具
上面第一、二步和第三步的分摊计算,我做成了两个不收费的网页工具。都在浏览器里算,台账不上传、不注册、不留记录:
电表台账体检
把台账粘进去,当场查出倍率漏乘、上级表断链、父子表成环、读数回退、用量勾稽不上等 10 类错误,可导出体检报告。
电费分摊计算器
选定总表、按用量或按面积摊销、损耗摊回与否,输出每表应摊用量与金额,加总严格闭合,舍入残差显式归行。
两个工具的口径都是公开写在页面上的,你不同意我的口径,可以按自己的改——但它们至少不会替你把错误藏起来。
想让我帮你把整份台账过一遍?
这套流程在实际项目里跑过不止一次,其中麻烦的从来不是算法,是那棵树和那几列空值。可以发我一份台账(名字、金额删掉也行),我先看看有没有硬伤——不要钱。
展开我的微信二维码
微信「星辰大海」· 加时备注「台账」