Excel 文本清洗、日期与时间计算
数据看起来整齐,不代表类型正确。本篇先在辅助列做转换,核对后再决定是否替换原列,避免把无法恢复的原始编号或日期覆盖掉。
点击步骤切换图示,再到 Office 中跟做;每一步都可跳到下方详细说明。
源值保留 A 列
清洗结果放 B 列
详细输入与检查见本步正文 ↓清理空格与不可见字符
假设 A2 是导入的部门名称,可先用 =TRIM(A2) 清除首尾普通空格,并压缩中间重复普通空格。但 TRIM 不负责清理所有 Unicode 空白,网页复制的数据可能含不间断空格。
=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," ")))这能处理一些常见情况,不代表能清除所有异常字符。CLEAN 主要针对特定不可打印字符;中文全角空格等仍需明确替换。真实姓名、地址中的空格可能有意义,不能不加判断全部删除。
提取、连接与分列
| 任务 | 示例公式 | 说明 |
|---|---|---|
| 取前三个字符 | =LEFT(A2,3) | 按字符位置提取 |
| 从第 4 位取 2 个字符 | =MID(A2,4,2) | 起点从 1 开始 |
| 连接部门和编号 | =B2&"-"&A2 | 输出文字 |
| 数值 7 显示成三位文字 | =TEXT(A2,"000") | 结果是文本 007 |
| 替换指定文字 | =SUBSTITUTE(A2,"旧部门","新部门") | 注意是否只应修改完整字段 |
“数据 → 分列”适合把稳定分隔符的数据拆开。分列前确认右边列为空或设置输出位置,否则可能覆盖已有内容;在导入向导中把编号列设为文本。支持 TEXTSPLIT 等新函数的版本也可以用动态数组拆分,但共享给旧版用户前要检查兼容性。
日期是真实数值还是文字
对日期单元格执行 =ISNUMBER(B2),真实 Excel 日期通常返回 TRUE。把文字设置成“日期格式”不一定能转换为真实日期。若来源为严格 2026-10-15 格式,可明确拆分:
=DATE(VALUE(LEFT(A2,4)),VALUE(MID(A2,6,2)),VALUE(RIGHT(A2,2)))此公式假设长度和位置都正确,而且 DATE 会对部分越界月份或天数做进位,并非严格日期校验器。导入后还应对比转换后的年月日与原始字段,非法值不能悄悄变成另一天。来源混用月/日/年和日/月/年时,优先在 Power Query 中指定区域设置。
月末、时间差与工作日
=EOMONTH(DATE(2026,10,15),0)
=DATE(2026,11,1)-DATE(2026,10,1)
=NETWORKDAYS(DATE(2026,11,2),DATE(2026,11,6))第一式结果格式化为日期后是 2026-10-31,第二式为 31 天,第三式在没有节假日参数时是 5 个工作日。NETWORKDAYS 默认周六、周日不算工作日,且计算区间包含符合条件的首尾日期;本地节假日与调休需要另外维护,不能认为它自动知道所有法定安排。
Excel 时间是一天的分数。开始时间 A2、结束时间 B2 都包含完整日期时,=(B2-A2)*24 得到小时数。只保存时分会丢失跨日信息;MOD(B2-A2,1) 只适合明确假设不超过一天的情况,不能用来掩盖负时间或多天记录。总时长显示可用 [h]:mm,避免超过 24 小时后显示回绕。
练习与验收
清洗 " 运营 " 后应为“运营”;把文字 2026-10-15 转成日期后,用 YEAR、MONTH、DAY 分别得到 2026、10、15。最后计算从 2026-10-31 22:00 到 2026-11-01 02:30 的时间差,应为 4.5 小时。
把文本辅助列和数值辅助列标清用途,避免将 TEXT 的漂亮输出拿去做时间区间比较。
图示跟做:把脏文本和日期变成可分析数据
按上方图示切换三个关键步骤;下面保留完整操作和检查结果,便于跟做与回查。请先使用练习副本。
第 1 步:先保留原始输入
定位:开始 → 复制。
新建清洗练习表,在 A2 输入带前后普通空格的“ 运营 ”,B2 输入 =TRIM(A2)。用 LEN 比较前后长度,确认只是去除了多余普通空格。遇到不间断空格,可先用 SUBSTITUTE 替换 CHAR(160),但不要把合法的产品名内部空格一概删除。
第 2 步:按来源约定转换日期
定位:数据 → 分列。
把类似 2026-10-01 的文本日期复制到空白测试列,选择“数据 → 分列”,在最后一步按来源顺序选日期 YMD。确认目标区域不会覆盖右侧数据。随后用 ISNUMBER 检查结果,再设置显示格式;仅把数字格式改为日期,并不保证文本已转换。
第 3 步:用已知日期检查转换结果
定位:公式 → 插入函数。
对已转换的日期输入 =EOMONTH(日期单元格,0),结果应为 2026-10-31,必要时给结果设置日期格式。再用 YEAR、MONTH、DAY 分别检查年、月、日。对于 03/04/2026 一类有歧义的原文,先确认是日/月还是月/日,不要只凭系统自动识别。
没有得到预期结果时
长编号发生精度损失后,把格式改成文本不能恢复丢失位数;应回到原始文本来源重新导入。日期和编号的转换要分列处理,不能一套规则清洗所有字段。
继续阅读
- 实践案例
- 故障排查
- 参考资料