这四行合成数据故意放了几种常见脏值:姓名里有全角空格,邮箱大小写不一,金额带货币符号,还有一格空白和一格“待定”。
先保留原 A:C 三列,把清洗结果写到 D:G。下面是本次生成并静态核对过的公式;预期值已用 Python 核过,Excel 365 中还没有实际计算。
D2 清洗姓名,再向下填到 D5:
=TRIM(SUBSTITUTE(A2," "," "))E2 清洗邮箱,再填到 E5:
=LOWER(TRIM(B2))F2 解析金额,再填到 F5。空白和解析失败都保留“待核实”:
=IF(TRIM(C2)="","待核实",IFERROR(NUMBERVALUE(SUBSTITUTE(SUBSTITUTE(TRIM(C2),"¥",""),"¥",""),".",","),"待核实"))G2 标记重复邮箱,再填到 G5。同一邮箱出现多次,所有对应行都标记:
=IF(E2="","",IF(COUNTIF($E$2:$E$5,E2)>1,"重复",""))用这四行作为核验输入,金额都先按文本填入:
第2行:姓名=' 李 雷 ',邮箱=' LI.LEI@EXAMPLE.COM ',金额=' ¥1,280.50 '
第3行:姓名='韩梅梅',邮箱=' HAN@EXAMPLE.COM ',金额='2,000'
第4行:姓名=' 李 雷 ',邮箱='li.lei@example.com',金额为空
第5行:姓名='王宁',邮箱='wang@example.com',金额='待定'应得到下面这张表。真正放进工作簿后,逐行检查数值和类型,再扩到自己的数据:
| 原行号 | D:清洗姓名 | E:清洗邮箱 | F:金额结果 | F类型 | G |
|---|---|---|---|---|---|
| 2 | 李 雷 | li.lei@example.com | 1280.5 | 数值 | 重复 |
| 3 | 韩梅梅 | han@example.com | 2000 | 数值 | 空白 |
| 4 | 李 雷 | li.lei@example.com | 待核实 | 文本 | 重复 |
| 5 | 王宁 | wang@example.com | 待核实 | 文本 | 空白 |
1280.5 和 2000 要保留为数值,不能为了显示两位小数转成文本。重复邮箱先标记,原行继续保留,是否删除留给后续核对。
这组公式限定于上面列出的字符与金额格式。若 Excel 使用分号分隔参数,需要替换参数间的逗号,引号内的千位分隔符“,”保留。
复用这份示例的完整提示词:
请给下面的小表写能直接在Excel 365使用的清洗方案,保留A到C原列,只向D到G输出。【示例输入】A姓名/B邮箱/C金额,值均按文本:第2行“ 李 雷 ”/“ LI.LEI@EXAMPLE.COM ”/“ ¥1,280.50 ”;第3行“韩梅梅”/“ HAN@EXAMPLE.COM ”/“2,000”;第4行“ 李 雷 ”/“li.lei@example.com”/空白;第5行“王宁”/“wang@example.com”/“待定”。D把全角空格换普通空格并TRIM,保留姓名中间一个空格;E清理首尾空格并小写;F将金额转数值,空白或非法值输出“待核实”;G按清洗后的邮箱标出所有重复项,不自动删行。F2请从这个公式开始验证:=IF(TRIM(C2)="","待核实",IFERROR(NUMBERVALUE(SUBSTITUTE(SUBSTITUTE(TRIM(C2),"¥",""),"¥",""),".",","),"待核实"))。给D2到G2完整公式,使用英文函数名和逗号分隔,说明向下填充到第5行。列出四行预期结果,金额必须保留数值类型;别用TEXT伪装数字,不给宏。最后说明本例只处理列出的空格与金额格式,区域设置使用分号的环境需替换参数分隔符。
本次输入(确切变量取值;以上要求保持不变):
Excel 365;A姓名/B邮箱/C金额,数据均按文本输入。第2行:A=' 李 雷 ',B=' LI.LEI@EXAMPLE.COM ',C=' ¥1,280.50 ';第3行:A='韩梅梅',B=' HAN@EXAMPLE.COM ',C='2,000';第4行:A=' 李 雷 ',B='li.lei@example.com',C为空;第5行:A='王宁',B='wang@example.com',C='待定'。