SW
SW
审计工具箱
明细表相关

明细表生成

自动化将科目余额表数据填充到底稿模板中,支持多公司批量生成、往来科目账龄计算和尾行批注数据提取汇总

视频教程


功能概述

本功能是明细表工作流的最终环节,负责将标准化后的科目余额表数据自动填充到底稿模板(Excel)中。核心能力包括:

  1. 多公司批量生成:按公司维度自动拆分数据,每个公司生成一套独立底稿
  2. 智能数据填充:根据底稿模板中的批注标记,自动将数据写入对应位置
  3. 往来账龄计算:支持使用多期数据自动划分账龄区间
  4. 尾行提取汇总:自动提取底稿尾行的合计/校验数据,生成跨文件汇总表

注意: 本功能需要 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.XLSX2022 年全年
4.其他应收款2021.XLSX2021 年全年
5.其他应收款2020.XLSX2020 年全年
6.其他应收款2019.XLSX2019 年全年

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.xlsxH2001-其他应收款明细表
货币资金D:\底稿\(G1000)货币资金.xlsxG1000现金明细表

提示: 可以使用工具箱提供的辅助按钮自动扫描底稿目录并填入信息。

Sheet 5(可选):映射表

当"字段名称映射"中使用了 $ 前缀的字段时,需要创建对应的映射表 Sheet。Sheet 名称必须与标准字段名一致。

例如,$会计科目描述 对应的标准字段名为 披露,则需要创建一个名为 披露 的 Sheet:

A列(键)B列(值)
库存商品存货
原材料存货
应收账款应收账款

底稿模板批注规范

底稿模板中的批注是程序识别填充位置的唯一依据。

必须使用的批注

批注名称位置说明
尾行数据区域末尾行的任意单元格标记数据区域的结束位置,必须填写

数据填充批注

在需要填充数据的列的表头位置插入批注,批注文本为"字段名称映射"表中的标准字段名

例如:底稿中想插入公司名称,在表头位置插入批注 公司名称

聚合批注(# 后缀)

如果某列需要按该维度聚合(合并相同值的行),在批注名后加 #

客户名称#

程序会按照该列的值进行分组聚合,数值列求和,文本列取首值。

账龄批注

对于需要划分账龄的往来科目,在底稿模板中使用 账龄:N 格式的批注:

账龄:1   → 第 1 个账龄区间
账龄:2   → 第 2 个账龄区间
...
账龄:N+1 → 第 N+1 个账龄区间

账龄区间数量 = 数据源文件数量 + 1。以 5 期数据为例:

批注含义
账龄:11 年以内
账龄:21-2 年
账龄:32-3 年
账龄:43-4 年
账龄:54-5 年
账龄:65 年以上

注意: 账龄合计数与期末数不等时,可能是:1) 负数余额导致的账龄划分偏差(需重新分类);2) 原始数据存在逻辑错误(如缺失数据、客户变更),需手工排查。

账龄批注的多期序号

对于多期数据源,基础金额字段也需要带序号:

期初余额:1    → 第 1 期的期初余额
本期借方:1    → 第 1 期的借方发生额
期末余额:5    → 第 5 期的期末余额

序号顺序与数据源文件名的序号一致,由近及远。

完整操作步骤

  1. 准备数据源:确保已完成"科目余额表处理"和"科目余额表后处理",获得标准化数据文件
  2. 填写"路径"表:设置输出文件夹和数据源路径
  3. 填写"科目与报表科目对应"表:建立科目映射关系
  4. 填写"字段名称映射"表:定义标准字段与数据源列名的对应关系
  5. 填写"科目与底稿模板"表:关联报表科目与模板文件
  6. 准备底稿模板:在模板中插入正确的批注
  7. 如有映射需求,创建映射表 Sheet
  8. 点击"开始运行"
  9. 查看输出结果和批注信息汇总表

输出结果说明

底稿文件

程序在输出文件夹下按公司名称创建子文件夹,每个文件夹包含该公司所有科目的底稿文件。

输出文件夹/
├── 公司A/
│   ├── H2000-其他应收款-2023.xlsx
│   ├── (G1000)货币资金.xlsx
│   └── 账龄基础数据/
│       └── 其他应收款账龄基础数据.xlsx
├── 公司B/
│   └── ...
└── 明细表提取批注信息_20231013_120000.xlsx

批注信息汇总表

程序运行结束后,会自动生成一份跨公司的汇总表,包含以下固定列:

列名说明
公司名称公司名
报表科目报表科目名
数据源期初余额从数据源计算的期初余额合计
数据源本期借方从数据源计算的借方合计
数据源本期贷方从数据源计算的贷方合计
数据源期末余额从数据源计算的期末余额合计
其他列底稿尾行批注提取的公式值

建议: 生成后请检查汇总金额,确保与试算平衡表(TB)一致。

账龄计算原理

对于指向文件夹的数据源,程序会按以下步骤计算账龄:

  1. 读取多期数据文件,按序号由远到近排列
  2. 对每条辅助核算记录,从最早一期开始逐步计算余额变动
  3. 根据每期的借贷方发生额,将期末余额分配到对应的账龄区间
  4. 正数余额从最近期间开始分配,负数余额从最远期间抵扣

运行时选项

当检测到输出目录下已有同公司的文件夹时,程序会弹出确认框:

  • 点击"确定":在已有文件中更新数据(保留原文件内容)
  • 点击"取消":清空对应公司文件夹,使用模板重新生成

常见问题

Q: 运行后提示"未构建任何写入任务"? A: 可能原因:1) 数据源中公司名称列名与配置不匹配;2) 科目名称与配置表 A 列不一致(注意空格和符号);3) 所有科目金额为 0 且设置了"无数据不复制空底稿";4) "是否生成"列未填"是"。

Q: 数据写入了但位置不对? A: 请检查底稿模板中的批注是否正确。批注应在数据填充起始行的上一行(或表头行的对应列),并且数据末尾必须有 尾行 批注。

Q: 账龄计算结果不准确? A: 请确认数据源文件的命名序号是否由近及远(1. = 最近一期)。如果数据文件中有以 字命名的文件,程序会将其作为计算起始期。

Q: 打开底稿时提示"链接更新"? A: 这是正常现象。汇总表使用了跨文件绝对路径公式,在不打开底稿时也能显示数值。