功能定位:为什么“跨表关键字汇总+折线图”值得单独拿出来讲

2026 春季版(内部号 13.9.2.3867)把「动态数组」「Python 脚本」「国密审计日志」一次性推给用户:数据量更大、合规颗粒度更细,领导还要“秒出图”。跨表关键字汇总并自动生成折线图恰好把这三件事串成最小闭环——函数一次性抽数,图形随源表追加自动更新,每条操作写进审计日志,方便事后抽查。

相比早期“数据透视表+手动刷新”,新方案省掉「刷新」这一步;Python 脚本可写入只读节点,杜绝“谁都能改数”的争议。与 Power Query 相比,WPS 的函数式写法更轻,无需额外加载项,信创终端也能跑。下文路径均以“Windows 桌面版默认布局”为准,macOS 与 Linux 入口差异会单独标注。

功能定位:为什么“跨表关键字汇总+折线图”值得单独拿出来讲
功能定位:为什么“跨表关键字汇总+折线图”值得单独拿出来讲

前置检查:哪些版本真能跑通

1. 客户端 ≥13.9.2,且「动态数组」开关已启用:文件→选项→高级→勾选“启用动态数组公式(实验特性)”。
2. 若打算用 Python 脚本,需在同一面板勾选“允许 Python 单元格”,否则菜单呈灰色。
3. 云协作场景下,所有协作者客户端也必须 ≥13.9.2,否则会出现“#VALUE!_旧引擎不兼容”提示。
4. 若文件要过国密审计,记得在另存为时选“OFD 加密+时间戳”,否则日志只记录到文件级,不到单元格级。

场景映射:一次典型的“销售日报”需求

总部要求:每天中午前汇总 30 个区域子表(命名格式:R_01~R_30)的“销售额”字段,关键字为“产品 ID”,自动生成折线图并邮件推送。总部只给“只读云链接”,区域经理随时补录前一日数据。需求拆解如下:

  • 数据源分散且持续追加——需要跨表抽数;
  • 关键字重复出现——需要聚合求和;
  • 总部只看图不看表——图必须随数自动更新;
  • 事后抽查——所有操作可审计。

下面步骤均以此场景为例,其他场景替换关键字、聚合方式即可。

操作路径:函数式方案(无代码)

Step1 准备汇总表

新建工作簿→命名“总表”→A1:A2 预置表头:产品 ID|销售额。B 列留空给动态数组输出。

Step2 一次性引用 30 个区域表

在 B1 输入公式:
=LET( 表列表,{"R_01:R_30"}, 抽数, LAMBDA(表, SUMIFS(INDIRECT(表&"!C:C"), INDIRECT(表&"!A:A"),A1)), 结果, MAP(A1:A100, 表列表, 抽数), 结果)
公式解释:用 MAP 把 A 列的每个产品 ID 循环丢给 SUMIFS,跨 30 个表求和;返回动态数组,溢出到 B 列。经验性观察:在 1200 万行模式下,30 个表、每表 5000 行,回算时间约亚秒级,CPU 占用可见提升。

Step3 插入折线图

选中 A1:B100→插入→折线图→“数据随区域追加自动扩展”开关保持默认开启(13.9.2 已默认勾选)。

Step4 开启审计日志

文件→信息→审计与合规→勾选“记录公式变更”→选“国密 SM4”加密存储。此后任何人在任何区域表补数,总表折线图会在保存瞬间自动重算,并在云端生成一条“公式重算+时间戳”记录。

操作路径:Python 脚本方案(大数据模式)

当子表行数合计 >200 万行时,函数式方案会触发“溢出区域过大”警告,此时切 Python 更稳。

  1. 在总表点击「Jupyter 单元格」图标(菜单:数据→Python 脚本→插入单元格)。
  2. 输入示例脚本,注意路径用 WPS 内置变量,避免写死盘符:
    import pandas as pd, glob, os wb_path = THIS_WORKBOOK_PATH # WPS 注入变量 files = glob.glob(os.path.join(wb_path, "R_*.et")) # et=WPS 原生格式 df_all = pd.concat([pd.read_et(f, sheet=1, usecols=["产品 ID","销售额"]) for f in files]) result = df_all.groupby("产品 ID", as_index=False)["销售额"].sum() OUTPUT(result) # 回写当前工作簿
  3. 运行后,Python 单元格右侧出现“刷新”按钮;折线图数据源指向该单元格输出区域,同样自动扩展。
  4. 审计日志会记录“Python 节点运行+哈希值”,满足招投标场景下的“脚本未被篡改”举证要求。
操作路径:Python 脚本方案(大数据模式)
操作路径:Python 脚本方案(大数据模式)

平台差异速查

平台动态数组开关位置Python 单元格入口国密审计
Windows文件→选项→高级数据→Python 脚本文件→信息→审计与合规
macOSWPS Office→偏好设置→高级数据→扩展→Python同上
Linux 信创工具→选项→高级工具→Python 环境同上,默认 SM4
iOS/Android暂不支持动态数组与 Python仅查看结果

不适用清单:遇到这些场景请绕道

  • 子表列宽不一致,且无法统一——INDIRECT 会返回 #REF!,需要先用 Power Query 做列映射,但 WPS Power Query 仍在公测,稳定性不足。
  • 需对结果做“逆透视”——动态数组目前不支持逆透视,建议回退到传统数据透视表。
  • 公司电脑禁用 Python 运行库——脚本方案直接失效,只能改用函数式。
  • 需实时秒级刷新(<1 s)——云协作网络延迟波动较大,经验性观察在 5~15 s 区间;可改用本地共享文件夹+本地客户端,但丧失异地审计能力。

故障排查:最常见三类报错

现象 1 #SPILL! 溢出区域被占

原因:下游手工在 B 列写了备注。处置:清空 B 列所有值→保存→自动重算。

现象 2 Python 单元格报 ModuleNotFoundError

原因:pandas 版本与 WPS 内置库不一致。处置:工具→Python 环境→重置为内置镜像→重启 WPS。

现象 3 折线图横轴出现“空白日期”

原因:产品 ID 列含空值或重复空格。处置:用 TRIM() 清洗→复制→选择性粘贴为值→重算。

最佳实践 12 条速查表

  1. 命名规则:子表统一前缀+零填充序号,方便 glob/INDIRECT。
  2. 关键字列必须位于子表 A 列,减少跨列查找开销。
  3. 汇总表产品 ID 列提前去重,避免 MAP 重复计算。
  4. 大数据模式先开“性能模式”再跑脚本,GPU 占用可降 30%。
  5. 任何手动改数后必须 Ctrl+S,否则审计日志缺失。
  6. Python 脚本首行加 #coding:utf-8,防止 Windows 终端乱码。
  7. 折线图标题用公式="更新至"&TEXT(NOW(),"mm/dd hh:mm"),可提示时效。
  8. 若需邮件推送,用 WPS 云办公“任务”→“到达时间点”→“导出 PDF+图”,避免附件太大。
  9. 定期用“文件→检查文档”清理隐藏名称,防止 INDIRECT 指向垃圾。
  10. 不要在共享链接里开启“允许导出为 Excel”,否则公式被拆成值,审计链断裂。
  11. Vision Pro 空间办公模式下,折线图暂不支持手势缩放,建议先导出图片再演示。
  12. 国密审计日志保留期限默认 5 年,若项目要求 7 年,需在管理中心手动改策略。

FAQ:你必须知道的 5 个细节(FAQPage Schema)

Q1 动态数组公式能否向下兼容旧版 WPS?

不能。旧版(13.0 之前)引擎会显示 #VALUE!。接收方必须 ≥13.9.2,否则需“另存为值”。

Q2 国密审计日志能否被管理员手动删除?

管理员可在后台“日志归档”中转出后再删除本地副本,但区块链时间戳一旦写入即不可改,满足招投标签章要求。

Q3 子表新增列会导致公式失效吗?

只要新增列不在被引用区域(示例中的 A:C),SUMIFS/INDIRECT 不会受影响;若插在 A:C 之间,需手动改列标。

Q4 手机端能否完成刷新?

iOS/Android 版目前仅支持查看结果,无法触发重算;需在桌面端或云函数触发。

Q5 折线图颜色能否按产品 ID 自动匹配企业 VI?

可以。在图表→颜色模板→导入企业主题色(.wth 文件),再用“按类别着色”即可;主题色文件需管理员提前下发。

收尾:下一步你该做什么

如果你只是偶尔汇总十几张表,函数式方案足够;一旦子表行数破百万,或审计要求落到“单元格级”,切 Python+国密日志是性价比最高的路线。先按本文“最佳实践 12 条”自检命名与权限,再在小范围跑一周,观察云盘流量与审计日志体积;确认无报错后,把刷新节点交给云函数,彻底实现“中午前自动出图”。最后别忘了在共享链接描述里写清“客户端版本 ≥13.9.2”,避免同事因为版本差打不开而把你拉群“围攻”。