十万行设备数据,交给 VBA 本地分析

4 次浏览

WorkBuddy + VBAYYDS 语音编程实践

十万行设备数据,还要一行行整理,或者整表粘进 AI 对话吗?这个案例换一种分工:让 WorkBuddy 理解需求、编写 VBA,再由 VBA 留在工作簿里完成计算。

十万行设备数据,交给 VBA 本地分析

图 1 已确认的统一封面。案例不做窗体,直接在工作表上点击按钮。

本案例用模拟工厂数据演示:100 台设备、10 万条记录,一次生成设备汇总、每日趋势和异常明细。本机多次运行约 2~5 秒;这是该数据与环境下的实测,不代表所有电脑的速度。

最有价值的不是“AI 帮我算了一次”,而是留下可重复使用的 VBA。以后换好符合格式的数据,点击“开始分析”就能重算,不必每次再问 AI。

01 先把数据与口径说清楚

原始表包含记录 ID、采样时间、设备编号、产线、运行状态、温度、振动和本段电量。模拟数据来自 100 台设备,每台 1,000 条,按 10 分钟采样间隔覆盖 7 个日期。它用于教学,不是真实工厂生产记录。

十万行设备数据,交给 VBA 本地分析

图 2 原始数据保留在工作簿中,AI 先看字段、规则和少量样例。

分析项目 本案例口径
运行时间 状态为“运行”的记录数除以 6,得到小时数
运行率 运行记录数除以总采样记录数,不等于 OEE
温度、振动 缺失值不参与各自平均值;合法的零电量保留
异常记录 温度 ≥ 80℃、振动 ≥ 7.1 mm/s 或状态为“故障”
异常计数 一条记录同时命中多个条件,只计一次,原因合并列出

这些规则决定结果的含义。采样间隔不固定时,不能直接套用“记录数除以 6”,应先按实际时间间隔重新设计计算。

02 用自然语言向 WorkBuddy 说明需求

从 VBA 编辑器的 VBAYYDS 菜单取得项目路径,在 WorkBuddy 新建任务并加入项目,然后直接用嘴说需求,通过语音输入提示词。要求越贴近真实工作,后续结果越容易验收。

十万行设备数据,交给 VBA 本地分析

图 3 需求同时交代输出、性能、检查和以后重复使用的方式。

本案例提示词:

请使用vba相关技能完成以下任务,不做窗体。这里有10万行设备运行数据,先看规则、表头和几行样例,不要把全部明细贴进对话。请汇总每台设备的运行时间、耗电和异常,画出每天的变化图,再列出异常记录。请用高效算法让VBA批量计算,别一格一格读写。加一个分析按钮,显示真实耗时,以后换了数据,点一下就能再用。原始数据不要改,做好后自动检查,重复运行也别生成一堆重复结果。

这不是说 AI 不能处理大表,而是不必把整份明细反复塞进对话。让 AI 理解结构与规则,再生成在本地运行的代码,更适合这个需要反复分析的工作流。

03 快在哪里:数组、字典和批量读写

高效的关键,是减少 VBA 与工作表之间的逐格往返。代码先用 Value2 将数据区一次读入二维数组,再在内存中按设备和日期分组,最后整块写回结果。

十万行设备数据,交给 VBA 本地分析

图 4 实际生成的 VBA 代码。业务逻辑由 WorkBuddy 编写,并经过运行与修正。

下面节选实际代码,展示批量读取和分组结构:

arr = ws数据.Range(ws数据.Cells(数据首行, 1), _
                   ws数据.Cells(末行, 数据列数)).Value2
m_总行数 = UBound(arr, 1)
Set dDev = CreateObject("Scripting.Dictionary")
Set dDay = CreateObject("Scripting.Dictionary")
Set dID = CreateObject("Scripting.Dictionary")

主循环逐条校验、累计和收集异常,主要汇总过程随记录数线性增长。设备、日期和异常数组按容量扩展,避免每新增一条记录就重新调整整个数组。

代码还会执行固定数量的独立复核扫描。因此,“高效”不等于整个程序只扫描一次;它的重点是批量读取、内存分组和批量输出,而不是反复操作十万个单元格。

04 让 AI 写完,也要让结果经得起检查

WorkBuddy 读取规则与样例后,生成模块、运行宏、根据结果继续修正。配合 VBAYYDS 的项目与运行能力,可以在同一个流程里完成编写和验证,而不是把代码复制出来就算结束。

十万行设备数据,交给 VBA 本地分析

图 5 真实任务过程。案例经过检查与反馈,不是“一次生成永远正确”的承诺。

程序会检查空白或重复记录 ID、非法时间、未知状态,以及非数字或不合理的负值。若输入校验失败,会停止并提示问题,不把未通过校验的数据写入结果表。

重复运行也做了处理:复用三张结果表、两张图表和一个分析按钮,避免每次运行都新增一批同名结果。运行期间保存并恢复屏幕更新、事件与计算设置。

除程序内的 19 项自检外,本案例另做了独立复核:34,231 项检查通过;原始数据和规则区域的 799,710 个单元格保持不变。内部自检与外部复核是两层检查,不应混为一谈。

数据有错误时,应先修正源数据再点击分析。新的业务规则则需要同步修改代码并重新验证,不能只凭报表外观判断结果正确。

05 十万行,输出三张可直接使用的结果表

设备汇总用于看每台设备的运行、耗电和异常;每日趋势用于观察日期变化;异常明细保留具体记录与原因,便于后续定位。

十万行设备数据,交给 VBA 本地分析

图 6 真实运行结果。画面中的耗时属于一次运行,不是统一性能保证。

核对项目 本案例结果
输入记录 / 设备 / 日期 100,000 条 / 100 台 / 7 天
总电量 279,470.99 kWh
异常明细 2,756 条,多条件命中不重复计数
运行记录 / 运行小时 78,966 条 / 13,161 小时
运行率 78.966%
本机实测耗时 多次运行约 2~5 秒

按钮运行曾记录到 2.01 秒,其他复测约 2.13~4.36 秒。耗时来自宏内部计时,不含外部命令派发等开销;不同电脑、数据规模、校验规则和办公软件环境都会影响表现。

06 换数据后复用,也要注意分析边界

十万行设备数据,交给 VBA 本地分析

图 7 趋势图帮助发现变化,但解释变化仍需结合采样范围与业务背景。

这份样例最后一天只有 13,600 条记录,其他日期各有 14,400 条。最后一天电量较低,不能直接得出“能效提高”的结论,还应比较采样覆盖时间、产量与运行状态。

以后使用时,先备份业务工作簿,再用相同字段结构替换原始数据,清除旧数据多余的尾行,点击“开始分析”。核对总行数、异常数量和耗时,确认输出对应的是本次数据。

当前版本的异常阈值定义在 VBA 常量中,“分析规则”表用于说明口径,并非所有参数都会从该表动态读取。如果修改温度阈值、采样间隔或新增设备状态,应让 WorkBuddy 同步调整代码并复测。

需要注意,工作簿中的本地计算不等于整个 AI 协作过程完全离线。发送给 AI 的规则、样例和日志仍需符合自己的数据保密要求;敏感数据先脱敏,不直接用于演示。

迁移到订单、库存、考勤或物流数据时,也可以沿用同一种说法:先看字段和样例,用高效方式批量分析,输出我需要的表,加一个可重复运行的按钮,保护原数据,并自动核对结果。

WorkBuddy 负责把需求变成代码,VBAYYDS 连接 VBA 项目与运行流程,VBA 负责本地批量计算。把一次求助,变成以后都能点击使用的工具。

十万行设备数据,交给 VBA 本地分析插图7

工具名称:VBAYYDS语音编程助手
适合人群:常用Excel且希望自动化操作但不想深学VBA的职场人
体验方式:下载地址vbayyds.com
✨ 让Excel听懂你的需求,或许只需要一次尝试。
✨ 你的时间,值得用在更值得的事情上。
官网下载地址 vbayyds.com
淘宝搜索 vbayyds
购买方式 加微信EXCEL880B
十万行设备数据,交给 VBA 本地分析插图8