前两篇我们已经把 Excel 的地基打牢,这一篇直接上"战场"。我会用一个真实电商订单数据案例,带你走完"脏数据 → 清洗 → 分析 → 可视化 → 自动化报告"的完整闭环。所有公式、快捷键、坑点都会逐行拆解,复制粘贴即可用。
场景设定:双 11 后 10 万条订单的生死时速
假设你是运营,老板甩过来一份 10 万行的 CSV:
• 日期格式混乱(2025/11/11、11-11-25、20251111...)
• 商品标题里藏着"【预售】""(赠品)"等噪音
• 支付金额列混入"¥""NULL""--"
• 同一用户 UID 出现多次,需判断新老客
目标:30 分钟内产出三张图------
每日 GMV 趋势
TOP10 品类销售额
新老客贡献占比
第一步:数据清洗三板斧
- 统一日期格式
在空白列输入:
公式
=--TEXT(A2,"0000-00-00")
把文本"20251111"强制转成真日期,再设置单元格格式为 yyyy-mm-dd。
- 清洗金额列
公式
=IFERROR(--SUBSTITUTE(SUBSTITUTE(E2,"¥",""),"NULL",),0)
双 SUBSTITUTE 去掉"¥"和"NULL",再用 IFERROR 把异常值变 0。
- 提取纯净品类名
公式
=TEXTBEFORE(TEXTAFTER(C2,"【"),"】")
利用 TEXTBEFORE + TEXTAFTER 组合拳,把"【手机】iPhone16"直接洗成"手机"。
第二步:IF + VOLATILE 函数实战
场景:标记新老客
思路:如果 UID 在整列中第一次出现 → 新客,否则老客。
公式(非数组版本)
=IF(COUNTIF(B2:B2,B2)=1,"新客","老客")
下拉自动扩展,COUNTIF 范围逐行扩大,性能在 10 万行内仍可接受。
高阶:VOLATILE 替代 OFFSET 做动态区域
传统 OFFSET 易卡,改用 INDEX 构造动态列:
定义名称 → 名称管理器
=INDEX(清洗!A:A,2):INDEX(清洗!A:A,COUNTA(清洗!A:A))
把这段命名成 DateCol,后续图表直接引用,文件体积瞬间瘦身 30%。
第三步:透视表 60 秒出图
- 每日 GMV
• 行:日期(按天)
• 值:支付金额(求和)
• 右键 → 组合 → 确保步长为"天"
- 品类 TOP10
• 行:清洗后的品类
• 值:支付金额(求和)
• 降序排序 → 前 10
- 新老客占比
• 列:新老客标记
• 值:支付金额(求和)
• 显示方式 → "总计的百分比"
第四步:一键刷新自动化
把 CSV 作为"数据连接"导入:
数据 → 获取数据 → 自文本/CSV → 选择文件 → 载入为表格 → 勾选"添加到数据模型"。
以后只需 数据 → 全部刷新 ,清洗列公式、透视表、图表同步更新,真正实现"数据源一换,报告秒出"。
彩蛋:条件格式预警
选中 GMV 列 → 开始 → 条件格式 → 数据条 → 红色渐变,低于日均 80% 的日期一眼识别。
💡 复盘清单
复制本文公式 → 替换列号 → 30 分钟交付老板。下一篇想深入 Power Query 还是动态数组函数?留言告诉我。