Skip to content
Back to skills

Report Making

ASecurity

报表制作——把业务数据做成读者看完就能拍板的周报、月报:先定读者与决策问题,再定口径、表结构、图表与异常标注。当用户说「报表怎么做」「周报模板」「月报模板」「指标口径怎么写」「数据透视表怎么用」时使用。

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 13, 2026
ai-agentspythonbashsql

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 13, 2026

npx -y skills add po-et/workbuddy-skills --skill report-making --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Report Making?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Report Making
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/po-et-report-making/badge)](https://www.skillsdirectory.com/skills/po-et-report-making)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: report-making
description: "报表制作——把业务数据做成读者看完就能拍板的周报、月报:先定读者与决策问题,再定口径、表结构、图表与异常标注。当用户说「报表怎么做」「周报模板」「月报模板」「指标口径怎么写」「数据透视表怎么用」时使用。"
author: Captain
version: 0.1.1
metadata:
  openclaw:
    requires:
      bins: [python3]
display_name: "报表制作"
display_name_en: "Report Making"
description_zh: "做业务报表的完整方法:先问清读者和他要做的决定,再写指标口径(定义、来源、粒度、更新频率),按维度×指标搭表,按问题选图,给异常值定阈值并标注原因,定好发布与更正节奏;附 Excel 数据透视与常用公式做法、周报月报模板和口径说明模板。"
description_en: "Build business reports that lead to decisions by defining the reader and the decision, pinning down metric definitions, designing dimension-by-metric tables, choosing charts, flagging anomalies and fixing a publishing cadence, with Excel pivot tables, core formulas, weekly and monthly templates and a metric definition template."
tags:
  - "报表制作"
  - "业务报表"
  - "周报模板"
  - "月报模板"
  - "指标口径"
  - "数据透视表"
  - "Excel 报表"
  - "图表选择"
  - "business report"
examples_zh:
  - "报表怎么做,老板说我的周报全是数,看不出重点"
  - "帮我出一份月报模板,销售数据要按区域和渠道拆开"
  - "数据透视表怎么用,汇总出来的数和明细对不上"
examples_en:
  - "How should I build a report? My boss says my weekly report is all numbers and has no focus."
  - "Give me a monthly report template with sales broken down by region and channel."
  - "How do pivot tables work? My totals don't match the detail data."
---

# 报表制作

定位一句话:**报表不是把数据摆出来,而是让一个具体的人看完能做一个具体的决定;读者和决定没定,一个指标都别加。**

**文件导航**:本页是主流程。周报、月报、口径说明三份模板见 [references/templates.md](references/templates.md);按区域和渠道拆的月报完整交付见 [examples/monthly-report-region-channel.md](examples/monthly-report-region-channel.md);两个脚本:`scripts/csv_profile.py` 给明细 CSV 体检,`scripts/anomaly_flag.py` 按阈值标异常。

## 何时使用

新做或重做周报、月报、专题数据报表;老板说「看不出重点」;两份报表同一个数对不上;要把 Excel 明细汇总成固定格式。用户常这样说:

- 「报表怎么做,老板说我的周报全是数,看不出重点」
- 「帮我出一份月报模板,销售数据要按区域和渠道拆开」
- 「数据透视表怎么用,汇总出来的数和明细对不上」
- 「指标口径怎么写,两个部门报的数不一样」
- 「哪些波动该标成异常,阈值怎么定」

不适用:

- 指标本身怎么选、权重怎么分:属于 KPI 制定,本技能只管把已定的指标做成报表。
- 资产负债表、利润表、现金流量表的编制、审计与税务:找会计或审计师。
- 要从数据库直接取数写查询:转交 SQL 类技能;用 Python 批量处理 Excel 文件:转交 Excel 处理类技能。

## 先判断:谁看,看完决定什么

动手前填完这三行,填不出来先去问,别急着做表:

```
读者      谁看(职位、人数),在哪看(手机群消息 / 邮件 / 例会投屏),愿意看几分钟
决策问题  看完要决定 ____(例:下周预算要不要往华东倾斜)
必要的数  回答这个问题最少要哪几个数,各跟什么比(上期 / 去年同期 / 目标)
```

读者不同,报表形态完全不同:管理层要一页、结论先行、不超过 5 个指标、每个数都配对比,关心「达没达标、要不要加资源」;业务负责人要能下钻到区域、渠道、产品,关心「哪里掉了、为什么」;一线要看自己的数和待办。同一份数据给三类读者,就做三个版本,不要做一张大表让大家各取所需。自检:拿掉某个指标,决策受不受影响?不受影响的移到附表或删掉。

## 流程:从口径到发布五步

**第 1 步 定口径。** 每个指标写清定义(数什么、不数什么)、来源(哪个表或导出文件的哪个字段)、粒度(按订单、用户还是门店计,汇总到日、周还是月)、更新频率(每天几点出前一天的数、月数据哪天冻结)。时间口径写死:以下单、支付还是完成时间为准;一周从周一还是周日算起。口径写好后请业务负责人书面确认一次,之后的改动都走版本号。
**第 2 步 搭表。** 行放维度(时间、区域、渠道、产品),列放指标和对比。一张表只回答一个问题;维度最多两层;按指标值降序排;单位写进表头,同列小数位一致;合计行加粗。明细存成一行一条记录的长表,展示表由透视表或公式生成,不手敲数字。
**第 3 步 选图。** 先写下这张图回答什么问题,再按下表选:

```
看趋势  折线图,时间放横轴;只有两三期就用柱形图
比大小  横向条形图,按数值排序
看构成  堆积柱形图;饼图只用于不超过 5 块且合计 100% 的情况
看达成  条形图加目标线,或直接用表格列完成率
看分布  直方图、箱线图;看两个指标的关系用散点图
不用    3D 图、双纵轴、纵轴不从 0 开始的柱形图
```

图标题直接写结论,如「华东连续三周下滑,主要掉在线上渠道」,而不是「华东销售额趋势」;要读者注意的那条线用深色,其余用浅灰。

**第 4 步 标异常。** 先定规则再看数据。默认阈值(按业务波动调整):环比变化超过 ±20% 且绝对量变化够大(小基数的 20% 没意义),或超出近 8 周均值 ±2 倍标准差。表里用 ▲▼ 加颜色,不只靠颜色,黑白打印也要看得出。每个异常写「现象—原因—影响—动作」,原因没确认就写「待查,负责人 ____」。异常值不删不改;确属数据错误的,修正后在数据说明里写明改了什么。口径变更点在趋势图上画竖线标注。汇总表导出成 CSV 后,可以让脚本按同样的规则先标一遍(`--min-abs` 就是「绝对量变化够大」的下限,对两条规则都生效):

```bash
python3 scripts/anomaly_flag.py 周汇总.csv --period 周 --value 销售额 --by 区域 --min-abs 30 --out 周汇总_标注.csv
```

**第 5 步 定节奏。** 例如周报每周一 10:00 发上周(数据截至周日 24:00),月报在次月第 3 个工作日前发。时间、模板固定,口径带版本号;发出后发现错误,发更正说明(错在哪、正确的数、影响哪些结论),不悄悄替换附件。

## Excel 做法:数据透视与基础公式

透视前先把明细整理成一维表:单行表头、一列一个字段、无合并单元格、无空行空列、日期是真日期、数字不是文本(单元格左上角有绿色小三角的,多半是文本数字)。

```
1 选中明细按 Ctrl+T 转成表格,表名改成「明细」,新增行自动纳入
2 插入 → 数据透视表 → 新工作表;行放维度,列放时间,值放指标
3 值默认成了「计数」,说明该列混有文本或空值,回去清洗
4 日期字段右键 → 组合 → 月 / 季度 / 年
5 占比、环比:值字段设置 → 值显示方式 →「总计的百分比」「差异百分比」
6 率类指标用计算字段(分子字段 ÷ 分母字段),它按合计值相除,正合适
7 插入切片器,读者可以自己按区域、渠道筛
8 源数据改动后点 数据 → 全部刷新,透视表不会自己更新
9 核对:透视表总计必须等于明细列求和,不等就查筛选、空白行和文本数字
```

常用公式(B1 填月初日期;日期区间用「≥ 月初且 < 下月初」,带时刻的记录才不会漏掉最后一天):

```
当月金额  =SUMIFS(明细[金额],明细[区域],$A2,明细[日期],">="&$B$1,明细[日期],"<"&EDATE($B$1,1))
环比      =IFERROR(C2/D2-1,"—")  C 本期、D 上期;上期为 0 或空时显示 —
转化率    =IFERROR(SUMIFS(明细[成交],明细[区域],$A2)/SUMIFS(明细[访客],明细[区域],$A2),"—")
查目标    =XLOOKUP($A2,目标[区域],目标[月目标],"未设目标")  旧版没有 XLOOKUP,改用 INDEX 加 MATCH
周序号    =WEEKNUM(A2,2) 以周一为一周开始;不想让元旦切开一周用 =ISOWEEKNUM(A2),跨年那几天会归到相邻年份
```

计数就把 SUMIFS 换成 COUNTIFS,去掉求和列即可。

上透视表前,用脚本给导出的明细 CSV 体检,能一眼看出「华东」「华东 」「华东区」这类同物异名、空值、空行、重复行、带千分位的文本数字和混用的日期写法(编码自动识别 UTF-8 和 GBK,只读不改原文件):

```bash
python3 scripts/csv_profile.py 明细.csv --key 订单号
```

## 模板:周报、月报、口径说明

三份纯文本模板在 [references/templates.md](references/templates.md):周报五段(本周结论、核心指标、异常、下周动作、数据说明);月报七段(本月结论、目标达成、趋势、结构拆解、异常与专题、下月计划与风险、附录);口径说明九项(名称、定义、公式、来源、粒度、时间口径、剔除规则、更新频率、版本)。

## 信息不全或出错时

| 情况 | 怎么处理 | 对用户说的话(模板) |
|---|---|---|
| 读者或决策问题没说 | 只问三件:谁看、在哪看几分钟、看完要决定什么;不答就按「管理层一页、结论先行、不超过 5 个指标」做,标 [待确认] | 「先问三件事:这份报表谁看、在哪看、看完要决定什么?没定之前我先按管理层一页版做,标了 [待确认]。」 |
| 没有数据,只要模板 | 模板里的数一律留 `____`;取不到的写「待取数」;绝不编示例数字充当真实数据 | 「模板先给你,数字位置都留空;拿到导出数据后再填,取不到的写『待取数』。」 |
| 两份报表同一个数对不上 | 先对口径再对数:时间字段(下单/支付)、周的起始日、剔除规则、截至时间、率是否被求了平均;列出两种口径各自的算法让用户选 | 「A 表按支付时间、剔除退款;B 表按下单时间、没剔除——两个数都对,只是口径不同。以哪个为准?」 |
| 明细读不进来或格式乱(编码、合并单元格、文本数字) | 先跑 `csv_profile.py` 体检,按「需要处理」逐条清洗后再透视 | 「先别透视,体检发现 3 个问题:『华东』有三种写法、金额里有带千分位的文本、有 1 行重复。清完再汇总。」 |
| 超出本技能范围(会计报表、审计税务、投资建议、给员工下绩效结论) | 会计、审计、税务找专业人员;只做业务报表,不预测、不承诺 | 「利润表的编制要按会计准则来,建议找会计;业务月报里的收入指标我可以帮你把口径写清。」 |
| 时间紧,只要最小可用版 | 最小版一页:3 条结论(每条带数字和对比)+核心指标表不超过 5 行+最多 1 条异常说明 | 「来不及就先交一页:三条结论、五个指标、一条异常说明;图和附表下期再补。」 |
| 用户坚持越界(「先编个数填上」「异常数据删掉别让老板看到」) | 不编数、不删异常;取不到写「待取数」,异常照标并写原因 | 「数我不能编,异常也不能删——发现了再更正更伤信任。我把它标出来,原因写『待查』,并写清下一步谁去查。」 |
| 回复太长被截断或中途断了 | 按输出契约的编号分段交付;用户说「继续」就从下一个编号接着写 | 「上一条写到第 3 部分表结构。回复『继续』,我从第 4 部分图表接着写。」 |

两个脚本的退出码与报错:

| 退出码 / 报错 | 原因 | 修正办法 |
|---|---|---|
| 0 | 完成;问题写在「需要处理」或「标出的异常」里 | 逐条处理;异常补上原因—影响—动作 |
| 1「--key 里的列……不在表头里」「--value 的列……不在表头里」 | 列名写错 | 照报错里列出的表头原样填写 |
| 1「文件是空的」「只有表头没有数据行」「没有可用的数字」 | 导出条件不对,或数值列全是文本、NaN 或无穷值 | 重新导出;把「12万」这类写法改成纯数字,缺失数据补取后重跑 |
| 1「表头重复」「表头有空列名」「表头有…列」「CSV 格式有误」「期次或维度为空」 | 表结构有歧义,金额可能被读到错误的列 | 补全列名和期次;重复列改名;含逗号的金额加引号,不让脚本猜列或丢列 |
| 1「要是…有限数字」 | 阈值是 NaN、无穷值或负的绝对变化下限 | `--pct`、`--sigma` 用大于 0 的有限数,`--min-abs` 用不小于 0 的有限数 |
| 1「……出现了两次——先汇总成一期一行」 | 给标异常脚本的不是汇总表 | 先用透视表汇总成每个维度一期一行 |
| 1「--out 不能和输入文件同名」「不认识的编码名」「参数有误」 | 想覆盖原件;编码名写错;参数缺失 | 另存新文件;编码写 utf-8 或 gbk |
| 2「找不到文件」「是表格文件,不是 CSV」「编码认不出来」「写不了……」 | 路径不对;给了 .xlsx;编码不是 UTF-8/GBK;目标文件被 Excel 占用或没写权限 | 核对路径;在 Excel 里另存为 CSV UTF-8;关掉占用的文件 |
| 130 | 按了 Ctrl+C | 重新运行;`--out` 先写临时文件再替换,中断不会留下半个文件 |

CSV 可用逗号、制表符或分号分隔。数值 NaN、无穷值和非数字按缺失标记,当前期与下一期不算环比,不进入历史均值;不会替用户补数。前 N 期恒定时标准差为 0,当前值偏离该恒定值且达到绝对变化下限,仍触发规则二。

## 输出契约

先交「读者—决策问题—指标清单」请用户确认,再搭表、出模板。之后按固定顺序交付:

```
1 读者—决策问题—指标清单  先确认这一步
2 口径卡                  每个指标一张,字段不留空;取不到的写「待取数」,不编数字、不估算填空
3 表结构                  表头草图,写清透视表字段怎么摆、每列用什么公式
4 图表                    每张图写明回答什么问题、为什么选这种图
5 异常与节奏              异常阈值、标注方式、截至时间、发布时间和更正办法
6 报表正文模板            Markdown 表格与纯文本,可直接粘进 Excel 或文档
7 自检结果                下面六条逐条写「是/否」
```

占位符:`____` 是模板里每期要填的数或名字;`[待补:…]` 是只有用户才有的信息(取数人、目标值、测试单怎么识别);`[待确认]` 是按默认值假设的内容(阈值、发布时间、一周从哪天算起);数字取不到写「待取数」,异常原因没确认写「待查,负责人 ____」。

交付前自检(逐条判断是/否,有一条「否」就改完再交):

1. 先交了「读者—决策问题—指标清单」,而且每个指标都能说出它回答哪个决策问题?
2. 每个指标都有口径卡,时间口径(下单/支付/完成、周的起始日)写死了?
3. 率类指标都是总分子 ÷ 总分母,没有对各组的率求平均?
4. 每个数都配了对比(上期、去年同期或目标),并写了数据截至时间?
5. 异常阈值写在看数据之前,异常都有「现象—原因—影响—动作」?
6. 报表里没有编造或估算填空的数字?

## 示例

(示例)周报「看不出重点」——

**用户**:报表怎么做,老板说我的周报全是数,看不出重点。

**助手先问**:① 这份周报谁看、在哪看?② 他看完要决定什么?③ 现在周报里有哪些指标?

**用户**:销售总监看,周一早上在手机上看。他主要想知道要不要调各区域的促销资源。现在有 14 个指标:销售额、订单数、客单价、访客、转化率、退款率……

**助手交付**:

```
读者      销售总监 1 人;周一早上手机上看;约 2 分钟
决策问题  下周促销资源要不要在区域之间调整
必要的数  各区域销售额(对比周目标、上周)→ 判断哪里掉了
          掉了的区域再看订单数和客单价 → 判断是量的问题还是价的问题
移到附表  访客、转化率、退款率等其余 11 个指标(不直接回答这个决策)
```

```
××业务周报|____ 年第 __ 周(__ 月 __ 日至 __ 月 __ 日)
数据截至 __ 月 __ 日 24:00|口径版本 v__|每周一 10:00 发布
一、本周结论(最多 3 条,每条带数字和对比)
  1. 销售额 ____ 万元,环比 ____%,完成周目标 ____%
  2. 掉得最多的是 ____ 区域(环比 ____%),主要是 ____(订单数 / 客单价)下降,原因 ____(已确认 / 待查)
  3. 建议 ____ 区域的促销资源 ____,请 ____ 在周二 12:00 前回复
二、各区域  | 区域 | 本周销售额 | 周目标 | 完成率 | 环比 | ▲▼ |(按完成率从低到高排)
三、异常(只列超阈值的)  现象 — 原因 — 影响 — 动作 — 负责人
附表  其余 11 个指标
```

改动说明:14 个指标砍到正文 3 个;结论先行、每个数都带对比;按完成率从低到高排,最需要关注的区域排在最前;手机上看,所以正文只留一张窄表。

按区域和渠道拆的月报完整交付(口径卡、表结构、透视表摆法、图表、异常规则、脚本体检输出)见 [examples/monthly-report-region-channel.md](examples/monthly-report-region-channel.md)。

## 常见问题(FAQ)

**Q:指标太多,删哪些?**
A:逐个问「拿掉它,这个决策受不受影响」;不受影响的移到附表或删掉。管理层版本正文不超过 5 个指标。

**Q:两份报表同一个数对不上,谁对?**
A:多数是口径不同:时间字段、周的起始日、剔除规则、截至时间。把两边的口径卡并排比,定一个为准,另一个在数据说明里注明差异。

**Q:透视表汇总出来和明细对不上?**
A:先查三样:筛选或切片器没清、明细里有空白行、数字存成了文本(值变成「计数」就是信号)。用 `csv_profile.py` 体检明细最快。

**Q:环比超过多少算异常?**
A:默认环比超过 ±20% 且绝对变化够大,或超出近 8 期均值 ±2 倍标准差;阈值要在看数据之前定,并按业务波动调整。

**Q:数据还没取到,能先出模板吗?**
A:能。数字位置留 `____`,取不到的写「待取数」;不用编的示例数字占位,免得被当真。

**Q:报表发出去才发现错了怎么办?**
A:发更正说明:错在哪、正确的数、影响哪些结论;不悄悄替换附件。

**Q:能帮我从公司系统里直接取数吗?**
A:不能,本技能不接任何内部系统、数据库或 BI 平台;数据由你导出成 Excel 或 CSV 提供,含姓名、手机号的先脱敏。

## 常见错误(反模式)

| 错误做法 | 为什么错 | 正确做法 |
|---|---|---|
| 把各区域转化率求平均当总转化率 | 小区域会把结果带偏 | 率只能用总分子除以总分母 |
| 口径悄悄变(本周起剔除退款却没写) | 趋势图凭空出现一个断崖,读者会误判 | 口径带版本号,变更写进数据说明,趋势图上画竖线 |
| 只有数没有对比 | 读者判断不了好坏 | 每个数至少配一个参照:上期、去年同期或目标 |
| 周的定义各用各的 | 两份周报差出一天的数 | 口径卡里写死一周从周几算起 |
| 发现异常就删掉,或者只标红不写原因 | 问题被藏起来,也没人跟进 | 异常不删不改,写「现象—原因—影响—动作」,原因未确认写待查和负责人 |
| 不写数据截至时间 | 读者拿周三的数和周五的数比 | 标题下写明「数据截至」 |
| 指标越加越多 | 重点被淹没,老板看不出要决定什么 | 每加一个指标,先说清它回答哪个决策问题 |
| 图标题只写「××趋势」 | 读者要自己找结论 | 标题直接写结论,重点线用深色 |
| 展示表手敲数字 | 改一处漏一处,和明细对不上 | 明细存长表,展示表由透视表或公式生成 |
| 取不到的数先估一个填上 | 估的数会被当成真的用 | 写「待取数」 |

## 边界与不做什么

- 不接任何内部系统、数据库或 BI 平台,不代为取数;数据由用户导出成 Excel 或 CSV 提供。
- 不做资产负债表、利润表、现金流量表等会计报表的编制、审计与税务处理,这些找会计或审计师。
- 不给投资建议,不对经营结果做预测或承诺;报表里的归因是假设,由业务负责人确认。
- 不对具体员工下绩效结论;含姓名、手机号的明细先脱敏再处理。
- 口径跨部门有分歧时,由双方负责人对齐,本技能只负责把分歧摆清楚。

Files in this skill

  • SKILL.md21.1 KB
  • examples/monthly-report-region-channel.md10 KB
  • references/templates.md2.8 KB
  • scripts/anomaly_flag.py11.8 KB
  • scripts/csv_profile.py10 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.