VBA-0058-杂乱数据正则清洗与标准输出

3 次浏览

VBA-0058-杂乱数据正则清洗与标准输出

不用逐格改:用 WorkBuddy + VBA 正则把杂乱客户数据清洗成标准表

一份只有 12 行的客户数据,可能同时混着手机号、邮箱、日期、金额和多余空格等问题。真正费时间的不是“改一行”,而是把规则写清楚、把异常留下来,并确保以后换一批数据还能一键重复执行。

这次案例不做窗体,也不让用户逐项设置参数。最终效果很直接:在“原始数据”工作表中放置一个 “正则清洗并输出” 按钮,点击后由 VBA 按“清洗规则”批量处理数据,合格记录写入“标准数据”,无法确认的记录进入“异常清单”。

本次实测共处理 12 条记录,其中 9 条正常、3 条待核验,有效金额合计 ¥24,691.25。再次点击按钮,输出结果保持不变,没有重复追加。

VBA-0058-杂乱数据正则清洗与标准输出

原始数据与工作表按钮:所有操作从一个按钮开始

一、这个案例真正要解决的,不只是“替换字符”

表面上看,数据清洗像是在删除空格、横线和货币符号。实际业务中更麻烦的是:不同字段的合法规则不同,而且“格式不统一”和“内容本身无效”不能混为一谈。

例如:

+86 138-0013-8000 可以安全地规范为 138-0013-8000;

¥1,280.5元 可以转换为数值,并显示为 ¥1,280.50;

zhaomin#example.com 不是一个可以直接修正的邮箱,程序不能擅自把 # 猜成 @;

月份为 13 的日期、位数不完整的手机号,也必须保留原值并进入待核验清单。

因此,可靠的数据清洗流程至少要同时完成四件事:识别、规范、校验、留痕。如果只做前两项,程序看起来“跑完了”,但很可能悄悄制造新的错误。

二、先把工作簿划分成四个清晰角色

工作表 作用 处理原则
原始数据 保存导入的客户记录 只读,不覆盖、不删除
清洗规则 记录字段要求和输出格式 作为程序判断依据
标准数据 输出清洗后且通过校验的结果 每次执行前重建数据区
异常清单 保存无法确认或不符合规则的记录 保留原值、原因和行号

这样的结构有两个好处。第一,用户可以随时回到原始数据核对;第二,业务规则与程序分开保存,后续调整手机号、日期或金额规则时,更容易定位影响范围。

三、给 WorkBuddy 的第一条提示词,普通人也能写

这次没有把“最后应该得到 9 条正常、3 条异常”提前写进提示词,因为开发前结果本来就是未知的。提示词只描述目标、规则来源、安全边界和操作入口,把具体实现与测试交给 AI 完成。

请帮我处理当前工作簿中的杂乱客户数据。按照“清洗规则”工作表的要求,使用 VBA 正则表达式清洗“原始数据”中的客户编号、姓名、手机号、邮箱、日期和金额,并按指定格式输出到“标准数据”工作表。无法判断或不符合规则的数据写入“异常清单”,不要自行猜测,也不要修改原始数据。不要创建窗体,请在“原始数据”工作表中生成一个“正则清洗并输出”按钮,点击即可执行。完成后请自行编译和测试;如果出现错误,请继续修正,并确保重复点击按钮不会产生重复数据。

VBA-0058-杂乱数据正则清洗与标准输出

在 WorkBuddy 中提交真实任务,先让 AI 读取工作区和现有工程

这条提示词为什么够用

目标明确:处理的是当前工作簿,不是让 AI 另做一份脱离现场的示例文件。

规则有来源:要求读取“清洗规则”工作表,避免把全部业务细节堆进一条长提示词。

安全边界清楚:不修改原始数据,无法判断时不猜测,而是写入异常清单。

交互入口简单:不要窗体,只生成一个工作表按钮,适合日常重复使用。

交付标准可验证:要求编译、测试,并验证重复点击不会产生重复记录。

这里最值得复用的表达不是某个正则公式,而是“无法判断时不要猜测”。它直接决定了程序是可信的清洗工具,还是一个可能擅自改错数据的黑箱。

四、从 VBA 工程到 WorkBuddy:把 AI 放进真实项目里

本次采用的是现有 VBA 工程协作流程:

第一步: 打开 VBA 编辑器并最大化;

第二步: 展开 VBAYYDS 菜单,点击 “复制项目路径”;

第三步: 插件自动导出当前 VBA 项目目录,并把路径复制到剪贴板;

第四步: 打开 WorkBuddy,点击“新建任务”;

第五步: 在固定位置选择工作空间,将刚才复制的项目目录加入当前任务;

第六步: 保持 WorkBuddy 已设置的默认模型,直接输入并发送提示词。

这一步的关键不是复制粘贴代码,而是让 AI 在真实工程目录中读取模块、工作表对象和现有结构。它可以在同一个工作区里完成修改、编译、测试和继续修正,减少来回搬运代码造成的版本混乱。

VBA-0058-杂乱数据正则清洗与标准输出

WorkBuddy 正在分析工程、写入代码并执行验证

五、正则表达式负责“识别边界”,VBA 负责“业务动作”

正则表达式很适合识别模式,但不应该独自承担全部业务判断。比较稳妥的分工是:

正则表达式:去除无效字符、匹配手机号和邮箱的基本结构;

VBA:读取规则、转换数据类型、判断日期有效性、组织输出和异常原因;

工作表:保存输入、规则、标准结果和异常证据。

下面代码为文章讲解而做的节选并简化,用于说明思路,不等同于项目中的完整模块。

Private Function KeepDigits(ByVal sourceText As String) As String
    Dim re As Object
    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    re.Pattern = "[^0-9]"
    KeepDigits = re.Replace(sourceText, "")
End Function

这段逻辑只负责“保留数字”。后面仍要由 VBA 判断国家代码、手机号长度和输出格式。也就是说,正则可以帮助清理外观,但不能替代业务校验。

不确定的数据,必须保留证据链

异常清单不应只有一句“错误”。更实用的内容包括:

原始数据所在行;

客户编号或其他业务主键;

出现问题的字段;

原始值;

待核验原因。

这样,人工复核时可以快速回到源记录,也能统计哪类数据问题最常见,为后续改进录入规则提供依据。

六、为什么要强调“重复点击不产生重复数据”

工作表按钮很容易被连续点击。如果程序每次都直接向末行追加,同一批数据会被写入两遍、三遍,统计金额也会随之失真。

这个案例采用“保留表头、重建输出数据区”的思路:每次运行先清理上次生成的结果,再按当前原始数据重新计算。

With Worksheets("标准数据")
    .Rows("2:" & .Rows.Count).ClearContents
End With

With Worksheets("异常清单")
    .Rows("2:" & .Rows.Count).ClearContents
End With

同样,这也是简化示意。真实项目还要保护按钮、格式、表头和必要公式,不能粗暴清空整个工作表。

VBA-0058-杂乱数据正则清洗与标准输出

VBA 编辑器中的清洗模块与测试输出

七、AI 完成后,不能只看一句“任务已完成”

WorkBuddy 可以帮助编写代码、编译并运行测试,但最终验收仍然要回到工作簿。建议至少检查下面四组场景。

检查类型 需要观察的内容 本次结果
正常记录 手机号、邮箱、日期、金额是否按规则输出 9 条进入标准数据
边界与无效记录 不确定值是否被擅自修改 3 条进入异常清单
原始数据保护 源表内容是否保持不变 未修改原始数据
重复执行 第二次点击是否重复追加 结果仍为 12 / 9 / 3

VBA-0058-杂乱数据正则清洗与标准输出

WorkBuddy 完成编译、执行与重复点击测试,并给出可核对的结果

本次运行的数字关系也应当闭合:处理总数 12 = 正常 9 + 待核验 3。有效金额合计为 ¥24,691.25。这些数字不是提前写进提示词的答案,而是程序运行后用于验收的实际结果。

八、最终输出:标准数据与异常数据各归其位

标准数据表只保留通过规则校验、可以继续参与业务处理的记录。手机号统一分组,日期统一为 yyyy-mm-dd,金额转换为数值并使用货币格式显示。这样,后续筛选、汇总、透视分析和系统导入都更稳定。

VBA-0058-杂乱数据正则清洗与标准输出

标准数据:通过规则校验的 9 条记录已按指定格式输出

异常清单则保存需要人工判断的记录。程序不会因为追求“全部自动化”而强行修复邮箱、日期、手机号或金额;它把不确定性显式交给人处理。

VBA-0058-杂乱数据正则清洗与标准输出

异常清单:3 条待核验记录保留原值与问题原因

九、这类任务中,AI 能做什么、不能替你决定什么

AI 适合完成

读取工作簿结构并生成 VBA 模块;

根据字段规则组织正则表达式与清洗函数;

创建工作表按钮并绑定宏;

编译、运行、发现错误后继续修正;

自动测试重复执行是否稳定。

仍然需要业务人员确认

某个不完整手机号是否允许补齐;

错误邮箱是否可以按经验修复;

特殊日期格式究竟代表哪一天;

异常金额应当作废、退回还是人工补录;

清洗规则变化后,历史数据是否需要重新处理。

一句话概括:AI 可以把确定的规则执行得更快,但不能替业务人员发明规则。

十、可直接复用的简洁提示词模板

请帮我处理当前工作簿中的【数据类型】。按照“【规则表名称】”工作表的要求,使用 VBA 正则表达式清洗“【原始表名称】”中的【字段列表】,并按指定格式输出到“【标准结果表】”。无法判断或不符合规则的数据写入“【异常表名称】”,不要自行猜测,也不要修改原始数据。不要创建窗体,请在“【按钮所在表】”中生成一个“【按钮名称】”按钮,点击即可执行。完成后请自行编译和测试;如果出现错误,请继续修正,并确保重复点击按钮不会产生重复数据。

使用这个模板时,只需要替换方括号中的业务信息。不要提前编造“应该输出多少条”的答案;让 AI 完成程序后,再依据原始数据、标准数据和异常清单进行三方核对。

结语

VBA 正则清洗的价值,不是把所有内容都改成看起来整齐,而是把可确定的格式自动标准化,把不确定的数据可靠地留下来。再结合 WorkBuddy 对真实 VBA 工程的读取、编写、编译和复测,就能把一次性的手工整理,变成可重复执行、可核对、可继续维护的工作表工具。

最终,本案例用一个按钮稳定完成了 12 条记录处理、9 条标准输出、3 条异常留痕、有效金额 ¥24,691.25,并通过重复点击测试。这才是“靠嘴编程”在办公自动化场景中真正有用的地方:不是省掉思考,而是把明确的需求更快地变成可靠流程。

VBA-0058-杂乱数据正则清洗与标准输出插图8

工具名称:VBAYYDS语音编程助手
适合人群:常用Excel且希望自动化操作但不想深学VBA的职场人
体验方式:下载地址vbayyds.com
✨ 让Excel听懂你的需求,或许只需要一次尝试。
✨ 你的时间,值得用在更值得的事情上。
官网下载地址 vbayyds.com
淘宝搜索 vbayyds
购买方式 加微信EXCEL880B
VBA-0058-杂乱数据正则清洗与标准输出插图9