Menu

Excel 怎样拆分姓名:TEXTSPLIT 和公式

=TEXTBEFORE(A2," ") 从 Ana Silva 中返回名字,=TEXTAFTER(A2," ") 返回姓氏。TEXTSPLIT 一次把一个单元格拆分成多列;在旧版 Excel 中,LEFT、MID 和 FIND 也能做到。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=TEXTBEFORE(A2," ") 返回第一个空格之前的所有内容,所以 Ana Silva 得到 Ana;=TEXTAFTER(A2," ") 返回空格之后的所有内容,即 Silva。把两个公式向下填充,每个全名就都被拆成了两列。

拆分名字和姓氏
B2
ABC
1Full nameFirstLast
2Ana SilvaAnaSilva
3Ben OkaforBenOkafor
4Chen WuChenWu
5Dara KellyDaraKelly
6Eli NovakEliNovak
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

修改 A 列中的姓名,另外两列也会跟着变。TEXTBEFORE、TEXTAFTER 和 TEXTSPLIT 需要 Microsoft 365 或 Excel 2024。适用于 Excel 2021 及更早版本的 LEFT 和 FIND 写法在后文。

TEXTSPLIT:把一个单元格拆分成多列

=TEXTSPLIT(A2," ") 在每个空格处切开文本,并把每一段溢出到单独的单元格中。一个公式有多少段就填充多少列:

在每个分隔符处拆分
B2
ABCDE
1Text
2Ana Maria SilvaAnaMariaSilva
3Paris, Lyon, NiceParisLyonNice
点击单元格查看它的公式。修改数字或公式,表格会重新计算。
  • 分隔符可以不止一个字符:", " 在逗号加空格处拆分,所以各段开头不会带空格。
  • 要给结果留出空间。如果右侧有单元格不是空的,公式就会显示 #SPILL!。
  • 拆分出的各段始终是文本,数字也一样,所以 SUM 会跳过它们。需要数字时,在前面加两个负号:=--TEXTSPLIT(A2,",")。

第三个参数是行分隔符。两个分隔符都给出时,TEXTSPLIT 会用一个单元格构建一张小表:逗号分隔列,分号分隔行。

从一个单元格得到行和列
A4
AB
1Teams
2Ana,Red;Ben,Blue;Chen,Green
3
4AnaRed
5BenBlue
6ChenGreen
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

另外两种在 Excel 中可用的写法,这里以文本形式列出:

=TEXTSPLIT(A2,,", ")        one piece per row: the column delimiter is left out
=TEXTSPLIT(A2,{";",","})    several delimiters in braces: splits at ; or ,

第一种把 excel, formulas, text 变成一列三个单元格,这样就能把输入在一个单元格中的列表转成多行。第二种把 red;green,blue 变成 red、green、blue。

中间名和“姓, 名”格式

TEXTAFTER(A2," ") 返回第一个空格之后的所有内容,所以对 Ana Maria Silva 它返回 Maria Silva。要取最后一个词,就用实例编号 -1 从末尾开始数。对于写成 Silva, Ana 的姓名,改为在逗号加空格处拆分:

带中间名的姓名
C2
ABC
1Full nameFirstLast
2Ana Maria SilvaAnaSilva
3Ben OkaforBenOkafor
4Chen Li WuChenWu
5CherCher
6
7Last, FirstFirstLast
8Silva, AnaAnaSilva
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

找不到分隔符时,TEXTBEFORE 和 TEXTAFTER 返回 #N/A,而 Cher 这样只有一个词的名字没有空格。第 5 行用到了第六个参数,即找不到时要返回的值:=TEXTBEFORE(A5," ",,,,A5) 返回整个名字,TEXTAFTER(...,"") 返回空单元格。

拆分邮箱地址
C2
ABC
1EmailUserDomain
2ana.silva@coddy.techana.silva
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中返回 A2 中邮箱地址的域名,也就是 @ 之后的所有内容。

在旧版 Excel 中拆分姓名

没有 TEXTBEFORE 和 TEXTAFTER 时,先用 FIND 找到空格的位置,再用 LEFT、MID 和 RIGHT 在它两侧截取:

用 LEFT 和 FIND 提取名字和姓氏
B2
ABC
1Full nameFirstLast
2Ana SilvaAnaSilva
3Ben OkaforBenOkafor
4Chen WuChenWu
点击单元格查看它的公式。修改数字或公式,表格会重新计算。
  • FIND(" ",A2) 是空格的位置:在 Ana Silva 中是 4。
  • LEFT(A2,4-1) 取它之前的 3 个字符。
  • MID(A2,4+1,100) 从空格之后开始,最多取 100 个字符。100 只是表示“比任何名字都长”;=RIGHT(A2,LEN(A2)-FIND(" ",A2)) 用精确的长度得到同样的结果。

没有空格时,这些公式返回 #VALUE!。把它们放进 IFERROR,写成 =IFERROR(LEFT(A2,FIND(" ",A2)-1),A2),就会改为返回整个单元格的内容。

短横线前的产品代码
B2
AB
1CodePrefix
2KT-1043-BLUE
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 B2 中用 LEFT 和 FIND 返回产品代码中第一个短横线之前的部分。

分列和快速填充

不用公式,一次性拆分一列:

  1. 选中全名所在的列。确保它右侧的列是空的,因为“分列”会覆盖它们。
  2. 选择“数据 > 分列”。
  3. 选择 分隔符号,点击“下一步”,勾选 空格(或逗号,或在 其他 中输入别的字符),点击“下一步”。
  4. 第一段会替换原来的全名。如果想保留全名,就把 目标区域 设为它们右侧的空单元格,然后点击“完成”。

按某种规律拆分时,快速填充更快:在 Ana Silva 旁边输入 Ana,按 Enter 键,再按 Ctrl+E 或选择“数据 > 快速填充”,Excel 就会填好其他行的名字。这两个工具写入的都是固定的值。之后姓名改了,拆分结果不会跟着变;公式则会。

常见问题

Excel 中怎样把名字和姓氏分开?

A2 中是 Ana Silva 这样的姓名时,=TEXTBEFORE(A2," ") 得到 Ana,=TEXTAFTER(A2," ",-1) 得到 Silva,即使中间还有中间名也没问题。在 Excel 2021 及更早的版本中,用 =LEFT(A2,FIND(" ",A2)-1) 提取名字。

哪些 Excel 版本有 TEXTSPLIT?

Microsoft 365、Excel 网页版和 Excel 2024 中有 TEXTSPLIT、TEXTBEFORE 和 TEXTAFTER。Excel 2021 及更早的版本显示 #NAME?;这些版本中请用 LEFT、MID、RIGHT 和 FIND,或者“数据 > 分列”。

Excel 中怎样按逗号拆分一个单元格?

=TEXTSPLIT(A2,", ") 把每一段溢出到单独的列中。如果想把各段放到不同的行,就把列分隔符留空:=TEXTSPLIT(A2,,", ")。

TEXTBEFORE 为什么返回 #N/A?

单元格中没有分隔符,比如只有一个名字,没有空格。在第六个参数中给出这种情况下要返回的值:没有空格时,=TEXTBEFORE(A2," ",,,,A2) 返回整个单元格的内容。

Coddy 编程语言插图

和 Coddy 一起学编程

开始