
WorkBuddy + AI 编程案例:10万行学生成绩长表转宽表与校内排名
WorkBuddy 编写 VBA · 2万名学生 · 一键重算
本案例用 WorkBuddy 把自然语言需求变成可重复使用的 Excel VBA 成绩分析工具。程序在本地处理10万行成绩长表,生成一人一行、各科分列的成绩宽表,并自动完成总分、校内排名、学校科目汇总和问题识别。
一 案例目标与数据结构
原始成绩采用教务系统常见的长表结构:一名学生的一门课占一行。10万行数据对应2万名学生、5门科目。学生名单作为全集,保证没有成绩的学生也不会从结果中消失。
- 把长表转换成一人一行、各科各一列的宽表。
- 计算总分和校内排名,缺科学生不参加排名。
- 区分缺考、待补录和长表中完全没有记录。
- 识别重复学生科目键、成绩超范围等问题。
- 保留原始数据,并生成可重复使用的开始处理按钮。

图1 原始成绩长表:一人一科一行,共10万行
二 零基础自然语言提示词
不需要先设计算法,也不用把10万行明细粘贴到对话。直接用日常工作语言说明结果结构、异常口径和复用要求。
请使用vba相关技能完成以下任务,不做窗体。学校汇总来的成绩一行一个学生一门课,一共有十万行。帮我整理成一人一行、各科各一列的成绩表,算总分和校内排名,再比较各学校各科情况。缺考和没录入不能混为一谈,重复成绩也要单独列出来。先看规则、表头和少量样例,不要把全部明细贴进对话。用高效算法批量处理,别一格一格读写。保留原数据,加一个开始处理按钮,以后换了数据可以再用。显示真实耗时,自动核对行数和合计,重复运行不要堆出重复结果。

图2 WorkBuddy 中放大展示的自然语言提示词
三 WorkBuddy 如何完成任务
WorkBuddy 先连接当前 VBA 工程,只读取案例规则、表头和少量样例,再生成完整代码。核心逻辑使用数组和字典在内存中处理,避免逐格读写造成性能瓶颈。
- 读取学生名单并建立“学校+学号”索引。
- 读取成绩长表并建立“学校+学号+科目”唯一键。
- 发现重复记录后撤回首条成绩,确保核验口径一致。
- 按学校计算各科人数、均分、最高分和最低分。
- 通过 VBAYYDS 命令同步代码、运行宏并连续验证。

图3 WorkBuddy 读取规则、表头和样例后生成处理方案

图4 AI 自动生成数组、字典、排名和批量写回代码
四 真实运行结果
| 核验项 | 实际结果 | 说明 |
|---|---|---|
| 成绩长表 | 100,000行 | 原始数据保持不变 |
| 学生名单 | 20,000人 | 宽表完整保留全集 |
| 唯一学生科目键 | 99,900 | 重复超额100条 |
| 可排名学生 | 19,878 | 五科均有效 |
| 不可排名学生 | 122 | 含全部缺科20人 |
| 问题记录 | 282条 | 重复、待补录、超范围和缺科 |
| 合计差 | 0.0 | 长表有效成绩与宽表完全一致 |
| 单次耗时 | 约1.8秒 | 同一宏连续运行三次成功 |

图5 10万行长表转换为2万行学生成绩宽表
五 学校汇总与问题清单
学校科目汇总按学校、科目统计正常人数、平均分、最高分、最低分、缺考、待补录、超范围、重复和缺科。数据问题清单保留学校、班级、学号、科目、原成绩、状态和来源记录号,方便教务人员追查。

图6 学校科目汇总可直接比较各校各科情况

图7 282条数据问题集中列出,其中重复记录100条
六 以后只需点一下按钮
1. 替换或追加成绩长表,并更新学生名单。
2. 保持关键工作表名和表头不变。
3. 点击案例说明页的“开始处理”按钮。
4. 查看学生成绩宽表、学校科目汇总和数据问题清单。

图8 VBA代码完成后,以后只需点击按钮立即重算
结语
WorkBuddy 的价值不是临时分析一次成绩,而是把整理规则、排名口径、异常识别和自动核验固化成可反复使用的 Excel VBA 工具。AI 负责理解需求、写代码和调试,10万行数据仍在本地高速处理。

