夜雨聆风学习资料网

ARTICLE · 1031458

收到一堆文件要整理?Excel 批量改名和提取信息

收到一堆文件要整理?Excel 批量改名和提取信息

从系统导出一批文件,名字长这样:2026-08-项目A-最终版-张三.xlsx。你想把日期、项目、负责人拆成三列,就只能一个个手打?

不用。Excel 有三个文本函数专门干这事。

从固定格式的文本里拆数据,不需要写代码,三个函数组合就够了。

 

关键命令

先把文件名列表弄进 Excel

如果文件都在一个目录里,用命令行导出列表:

Get-ChildItem "D:\项目文件" -File | Select-Object -ExpandProperty Name > filelist.txt

打开 filelist.txt,把内容粘到 Excel 的 A 列。

或者更直接:在资源管理器里 Ctrl+A 全选文件,按住 Shift 右键 → "复制为路径",粘进 Excel 后手动处理。

 

方式对比

三个核心函数

1. LEFT / RIGHT / MID —— 按位置截取

=LEFT(A2, 10)

取 A2 单元格左边 10 个字符。上面例子里正好是 2026-08-项——嗯,位置数得不对。所以更稳的方式是按分隔符拆。

2. FIND —— 找分隔符位置

=FIND("-", A2)

返回第一个 - 在字符串里的位置。返回 6 表示第 6 个字符是 -

3. TEXTSPLIT —— 按分隔符直接拆开(新版 Excel)

如果你的 Excel 是 Microsoft 365 版本,一个函数就够了:

=TEXTSPLIT(A2, "-")

这会把 2026-08-项目A-最终版-张三.xlsx 按 - 拆成五段,横着填充到相邻单元格。

注意:TEXTSPLIT 的结果会自动"溢出"到右边的单元格,所以右边必须有空列。如果提示 #SPILL! 错误,就是右边被占用了。

老版本 Excel 的拆分写法

如果没有 TEXTSPLIT,用 LEFT + MID + FIND 组合。假设格式固定为 日期-项目-版本-负责人

取日期(第一段)

=LEFT(A2, FIND("-", A2) - 1)

取项目(第二段)

=MID(A2, FIND("-", A2) + 1, FIND("-", A2, FIND("-", A2) + 1) - FIND("-", A2) - 1)

这个公式读起来绕,逻辑是:从第一个 - 之后开始,取到第二个 - 之前。内层 FIND 加了起始位置参数,用来找第二个分隔符。

取负责人(最后一段,含扩展名)

=MID(A2, FIND("|", SUBSTITUTE(A2, "-", "|", LEN(A2) - LEN(SUBSTITUTE(A2, "-", "")))) + 1, 100)

这个技巧值得记:SUBSTITUTE 把最后一个分隔符换成特殊符号,再用 FIND 定位。因为 FIND 只能从左往右找,想找"最后一个"就得先把它换成唯一标记。

顺手去掉扩展名

=LEFT(A2, FIND(".", A2) - 1)

但要注意文件名里可能有点(比如 v1.2.xlsx)。更稳的写法是找最后一个点,同样用 SUBSTITUTE 技巧:

=LEFT(A2, FIND("|", SUBSTITUTE(A2, ".", "|", LEN(A2) - LEN(SUBSTITUTE(A2, ".", "")))) - 1)

提取日期并转成真正日期

拆出来的 2026-08 是文本,不能排序和计算。用 DATEVALUE 转:

=DATEVALUE(LEFT(A2, 10))

如果原字符串的日期格式不标准(比如 20260801),得手动拼:

=DATE(LEFT(A2,4), MID(A2,5,2), MID(A2,7,2))

批量改名的思路

Excel 拆完信息之后,可以反向拼出新文件名:

=B2 & "_" & C2 & ".xlsx"

生成一列新名字,再用命令批量改:

Get-ChildItem "D:\项目文件" -File | Rename-Item -NewName { $_.Name -replace "旧关键词", "新关键词" }

改名前务必备份,或者先用 -WhatIf 参数预览效果:

Get-ChildItem "D:\项目文件" -File | Rename-Item -NewName { $_.Name -replace "旧", "新" } -WhatIf

总结

  • 按固定分隔符拆文本 → TEXTSPLIT(新版)
  • 老版本 → LEFT + MID + FIND 组合
  • 找最后一个分隔符 → SUBSTITUTE 换成唯一标记再 FIND
  • 文本转日期 → DATEVALUE 或 DATE
  • 批量改名 → Excel 生成新名字 + PowerShell Rename-Item

处理批量数据的效率差距,往往就在"会不会用公式"这一件事上。

你用 Excel 处理过什么重复性工作?有没有写过特别绕的公式?评论区聊聊。

相关学习资料