明细表生成
自动化将科目余额表数据填充到底稿模板中,支持多公司批量生成、往来科目账龄计算和尾行批注数据提取汇总
视频教程
- 04-明细表生成原理 — 4 分 26 秒
- 05-明细表生成-基础操作 — 19 分 40 秒
- 06-明细表生成-数据透视 — 2 分 54 秒
- 07-明细表生成-披露口径与关联方设置 — 9 分 10 秒
- 08-明细表生成-期初期末符号改变 — 6 分 42 秒
- 09-明细表生成-借贷符号及优先级设置 — 11 分 51 秒
- 10-明细表生成-同一底稿多张明细表的写入 — 6 分 10 秒
- 11-明细表生成-多个账套写成一个明细表 — 6 分 47 秒
- 12-明细表生成-提取汇总信息进行检查 — 2 分 52 秒
- 13-明细表生成-往来科目账龄划分 — 10 分 10 秒
- 14-明细表生成-再次生成的数据更新 — 3 分 19 秒
功能概述
本功能是明细表工作流的最终环节,负责将标准化后的科目余额表数据自动填充到底稿模板(Excel)中。核心能力包括:
- 多公司批量生成:按公司维度自动拆分数据,每个公司生成一套独立底稿
- 智能数据填充:根据底稿模板中的批注标记,自动将数据写入对应位置
- 往来账龄计算:支持使用多期数据自动划分账龄区间
- 尾行提取汇总:自动提取底稿尾行的合计/校验数据,生成跨文件汇总表
注意: 本功能需要 64 位 Excel 环境(依赖 xlwings 组件)。
输入输出
- 配置文件:
input/明细表配置表.xlsm - 输出目录:配置表中"路径"表指定的文件夹
整体工作流
标准化科目余额表(数据源)
↓
明细表配置表(5 个 Sheet)
↓
程序自动匹配科目 → 填充底稿模板 → 输出结果
↓
批注信息汇总表(跨公司汇总校验)配置表详解
配置文件(明细表配置表.xlsm)包含 5 个必填 Sheet。
注意: 标绿色的 Sheet 名称不能删除或重命名。
Sheet 1:路径
定义输出位置和数据源。
| 行号 | A列 | B列 | C列 | 说明 |
|---|---|---|---|---|
| 第 1 行 | 输出文件夹 | 如 D:\审计项目\底稿输出 | 是/否 | B 列为输出文件夹路径,C 列填"是"表示无数据时也复制空底稿 |
| 第 2 行起 | 数据来源名称 | 文件路径或文件夹路径 | 自定义数据来源名称,B3 往下可填多个 |
数据来源名称是自定义的标识符,会在"科目与报表科目对应"表中被引用。
关于往来科目:如果科目需要划分账龄,需要多期数据文件,将它们放在同一个文件夹下,路径填写该文件夹路径。文件命名规则为 序号.文件名,由近及远排列,例如:
| 文件名 | 说明 |
|---|---|
1.其他应收款202310-12.XLSX | 最近一期(2023 年 10-12 月) |
2.其他应收款202301-09.XLSX | 次近一期(2023 年 1-9 月) |
3.其他应收款2022.XLSX | 2022 年全年 |
4.其他应收款2021.XLSX | 2021 年全年 |
5.其他应收款2020.XLSX | 2020 年全年 |
6.其他应收款2019.XLSX | 2019 年全年 |
Sheet 2:科目与报表科目对应
定义数据源科目与底稿报表科目的映射关系。
| 列名 | 说明 | 示例 |
|---|---|---|
| A列 - 一级科目 | 数据源中的一级科目名称 | 银行存款、应收账款 |
| B列 - 报表科目 | 对应的底稿报表科目名称 | 货币资金、应收账款 |
| C列 - 符号 | 科目的借贷方向 | 借 或 贷 |
| D列 - 正负 | 金额是否取反 | 正(不变)或 负(期初期末取反) |
| E列 - 数据来源 | 对应"路径"表中的数据来源名称 | 科目余额表、辅助科目余额表 |
| F列 - 是否生成 | 控制是否生成该科目的底稿 | 只有填 是 的科目才会生成 |
关键规则:
- 多个一级科目可以映射到同一个报表科目(如
银行存款和库存现金都映射到货币资金),程序会自动合并 正负为负的科目,其期初和期末余额会被取反
Sheet 3:字段名称映射
定义标准字段与数据源实际列名的对应关系。这是配置中最关键的一张表。
| A列 - 标准字段 | B列 - 数据源列名 | C列 - 是否文本 | 说明 |
|---|
必填的标准字段(名称不可修改):
| 标准字段 | 说明 | 填写示例 |
|---|---|---|
| 公司名称 | 数据源中公司名称列 | 公司名称 |
| 科目名称 | 数据源中科目名称列 | 一级科目描述 |
| 期初余额 | 数据源中期初余额列 | 本币(期初余额) |
| 本期借方 | 数据源中本期借方发生额列 | 本币(本期借方) |
| 本期贷方 | 数据源中本期贷方发生额列 | 本币(本期贷方) |
| 期末余额 | 数据源中期末余额列 | 本币(期末余额) |
自定义标准字段:除必填字段外,可以根据底稿模板中的批注名称自由添加行。
B 列(数据源列名)的特殊规则
规则 1:借贷区分(/ 分隔)
如果借方科目和贷方科目需要填充不同列的数据,用 / 分隔:
客户-贸易伙伴/供应商-贸易伙伴含义:借方科目取 客户-贸易伙伴 列,贷方科目取 供应商-贸易伙伴 列。
规则 2:优先顺序(- 分隔)
如果数据可能来源于多列,按优先级用 - 连接:
客户名称-贸易伙伴名称含义:优先取 客户名称 列,为空则取 贸易伙伴名称 列。
规则 3:映射表引用($ 前缀)
如果填充值需要通过映射表转换,在列名前加 $:
$会计科目描述含义:根据 会计科目描述 列的值,在名为 披露 的独立 Sheet 中查找对应的映射值。
规则 4:混合使用
可以组合以上规则:
客户名称-贸易伙伴名称/供应商名称-贸易伙伴名称C 列(是否文本)
如果某个字段生成的数字应保留为文本格式(防止变成科学计数法),填 是。典型场景:客户编号、银行账号等。
Sheet 4:科目与底稿模板
定义报表科目与底稿模板文件的对应关系。
| A列 - 报表科目 | B列 - 模板文件路径 | C列 - 工作表名称 |
|---|---|---|
| 其他应收款 | D:\底稿\H2000-其他应收款-2023.xlsx | H2001-其他应收款明细表 |
| 货币资金 | D:\底稿\(G1000)货币资金.xlsx | G1000现金明细表 |
提示: 可以使用工具箱提供的辅助按钮自动扫描底稿目录并填入信息。
Sheet 5(可选):映射表
当"字段名称映射"中使用了 $ 前缀的字段时,需要创建对应的映射表 Sheet。Sheet 名称必须与标准字段名一致。
例如,$会计科目描述 对应的标准字段名为 披露,则需要创建一个名为 披露 的 Sheet:
| A列(键) | B列(值) |
|---|---|
| 库存商品 | 存货 |
| 原材料 | 存货 |
| 应收账款 | 应收账款 |
底稿模板批注规范
底稿模板中的批注是程序识别填充位置的唯一依据。
必须使用的批注
| 批注名称 | 位置 | 说明 |
|---|---|---|
尾行 | 数据区域末尾行的任意单元格 | 标记数据区域的结束位置,必须填写 |
数据填充批注
在需要填充数据的列的表头位置插入批注,批注文本为"字段名称映射"表中的标准字段名。
例如:底稿中想插入公司名称,在表头位置插入批注 公司名称。
聚合批注(# 后缀)
如果某列需要按该维度聚合(合并相同值的行),在批注名后加 #:
客户名称#程序会按照该列的值进行分组聚合,数值列求和,文本列取首值。
账龄批注
对于需要划分账龄的往来科目,在底稿模板中使用 账龄:N 格式的批注:
账龄:1 → 第 1 个账龄区间
账龄:2 → 第 2 个账龄区间
...
账龄:N+1 → 第 N+1 个账龄区间账龄区间数量 = 数据源文件数量 + 1。以 5 期数据为例:
| 批注 | 含义 |
|---|---|
账龄:1 | 1 年以内 |
账龄:2 | 1-2 年 |
账龄:3 | 2-3 年 |
账龄:4 | 3-4 年 |
账龄:5 | 4-5 年 |
账龄:6 | 5 年以上 |
注意: 账龄合计数与期末数不等时,可能是:1) 负数余额导致的账龄划分偏差(需重新分类);2) 原始数据存在逻辑错误(如缺失数据、客户变更),需手工排查。
账龄批注的多期序号
对于多期数据源,基础金额字段也需要带序号:
期初余额:1 → 第 1 期的期初余额
本期借方:1 → 第 1 期的借方发生额
期末余额:5 → 第 5 期的期末余额序号顺序与数据源文件名的序号一致,由近及远。
完整操作步骤
- 准备数据源:确保已完成"科目余额表处理"和"科目余额表后处理",获得标准化数据文件
- 填写"路径"表:设置输出文件夹和数据源路径
- 填写"科目与报表科目对应"表:建立科目映射关系
- 填写"字段名称映射"表:定义标准字段与数据源列名的对应关系
- 填写"科目与底稿模板"表:关联报表科目与模板文件
- 准备底稿模板:在模板中插入正确的批注
- 如有映射需求,创建映射表 Sheet
- 点击"开始运行"
- 查看输出结果和批注信息汇总表
输出结果说明
底稿文件
程序在输出文件夹下按公司名称创建子文件夹,每个文件夹包含该公司所有科目的底稿文件。
输出文件夹/
├── 公司A/
│ ├── H2000-其他应收款-2023.xlsx
│ ├── (G1000)货币资金.xlsx
│ └── 账龄基础数据/
│ └── 其他应收款账龄基础数据.xlsx
├── 公司B/
│ └── ...
└── 明细表提取批注信息_20231013_120000.xlsx批注信息汇总表
程序运行结束后,会自动生成一份跨公司的汇总表,包含以下固定列:
| 列名 | 说明 |
|---|---|
| 公司名称 | 公司名 |
| 报表科目 | 报表科目名 |
| 数据源期初余额 | 从数据源计算的期初余额合计 |
| 数据源本期借方 | 从数据源计算的借方合计 |
| 数据源本期贷方 | 从数据源计算的贷方合计 |
| 数据源期末余额 | 从数据源计算的期末余额合计 |
| 其他列 | 底稿尾行批注提取的公式值 |
建议: 生成后请检查汇总金额,确保与试算平衡表(TB)一致。
账龄计算原理
对于指向文件夹的数据源,程序会按以下步骤计算账龄:
- 读取多期数据文件,按序号由远到近排列
- 对每条辅助核算记录,从最早一期开始逐步计算余额变动
- 根据每期的借贷方发生额,将期末余额分配到对应的账龄区间
- 正数余额从最近期间开始分配,负数余额从最远期间抵扣
运行时选项
当检测到输出目录下已有同公司的文件夹时,程序会弹出确认框:
- 点击"确定":在已有文件中更新数据(保留原文件内容)
- 点击"取消":清空对应公司文件夹,使用模板重新生成
常见问题
Q: 运行后提示"未构建任何写入任务"? A: 可能原因:1) 数据源中公司名称列名与配置不匹配;2) 科目名称与配置表 A 列不一致(注意空格和符号);3) 所有科目金额为 0 且设置了"无数据不复制空底稿";4) "是否生成"列未填"是"。
Q: 数据写入了但位置不对?
A: 请检查底稿模板中的批注是否正确。批注应在数据填充起始行的上一行(或表头行的对应列),并且数据末尾必须有 尾行 批注。
Q: 账龄计算结果不准确?
A: 请确认数据源文件的命名序号是否由近及远(1. = 最近一期)。如果数据文件中有以 始 字命名的文件,程序会将其作为计算起始期。
Q: 打开底稿时提示"链接更新"? A: 这是正常现象。汇总表使用了跨文件绝对路径公式,在不打开底稿时也能显示数值。