EP01. “Separate Strings 拆分字符串(VBA 版)”
🔒 登录后可标记已读- 用 VBA 写一个批量处理的宏,把「姓, 名」格式的全名(例如 "Smith, Mike")自动拆成姓和名两栏
- 跟 03_Functions/05_Text 分类里用公式拆分(EP01)是同一个需求,但这里改用 VBA 循环一次处理整批数据
- 前置知识:InStr、Mid、Left 三个字符串函数的基本用法
- 学完能自己写循环,一次批量处理一整列的姓名拆分
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
完整代码
Dim fullname As String, commaposition As Integer, i As Integer
For i = 2 To 7
fullname = Cells(i, 1).Value
commaposition = InStr(fullname, ",")
Cells(i, 2).Value = Mid(fullname, commaposition + 2)
Cells(i, 3).Value = Left(fullname, commaposition - 1)
Next i
逻辑说明
- 循环跑过 A2 到 A7 这几行的全名数据
- 用
InStr(fullname, ",")找出逗号在这个字符串里的位置 Mid(fullname, commaposition + 2):从逗号后面第 2 个字符开始截到结尾,取出名字(跳过逗号和后面那个空格)Left(fullname, commaposition - 1):从开头截到逗号前一个字符,取出姓氏
学完你会
- ✅ 用
InStr找出分隔符(逗号、空格等)在字符串里的位置 - ✅ 搭配
Mid/Left按位置把字符串切成两段 - ✅ 用 For 循环把单格的字符串处理逻辑套用到整批数据
常见错误
Mid的起始位置少加了跳过空格的偏移量,名字前面多一个空格- 循环范围写死成
2 To 7,数据笔数变动后忘记同步调整 - 全名格式不是「姓, 名」(比如没有逗号),
InStr找不到逗号会返回 0,导致Mid/Left截取位置算错
Sources
Blog / Website: