Lance在工作簿中有一组名称。名称全部在A列中,其中一些具有名字和姓氏,而其他一些则使用名字,中间名和姓氏。他需要将名称分成单独的列,但是“文本到列”向导不能提供令人满意的结果。它可以进行分离,但是两个名称与三个名称的比较意味着Lance在拆分后需要对数据进行大量的手动处理。

该问题的解决方案是不依赖于“文本到列”向导,而是使用许多公式将名称放入列中。您获得的结果在很大程度上仍取决于要解析的数据的条件。如果数据的格式为“ first first last”(中间名是可选的),则可以使用以下公式提取名字:

=LEFT(A1,SEARCH(" ",A1,1)-1)

此公式检查名称中的第一个空格,然后假定该空格之前的所有内容均为名字。下一个公式用于确定是否存在中间名,如果存在,请显示该中间名:

=IF(ISERROR(SEARCH(" ", RIGHT(A1, LEN(A1) - SEARCH(" ", A1, 1)), 1)) = TRUE, "", LEFT( RIGHT(A1,LEN(A1) - SEARCH(" ", A1, 1)), SEARCH(" ", RIGHT(A1, LEN(A1) - SEARCH(" ", A1, 1)), 1) - 1))

即使公式在此处显示为5行,它实际上是一个公式,因此应这样输入。该公式检查名称中是否存在第二个空格。如果生成错误(没有第二个空格),则该公式不返回任何内容;没有中间名。如果检测到第二个空格(不生成错误),则该公式将返回从第一个空格到第二个空格的所有内容。

下一个公式用于提取姓氏:

=RIGHT(A1,LEN(A1)-LEN(B1)-LEN(C1)-IF(C1="",1,2))

此公式依赖于返回的名字和中间名的结果。考虑到名字(假设在单元格B1中)和中间名(假设在C1中)的长度后,它将返回原始名称中剩下的所有内容。 (请参见图1。)

image

图1.将名称分成多个列。

同样,如果A列中的名称遵循一些非常严格的准则,则这些公式将起作用。名称必须采用“第一名”或“第一名中间名”格式。如果名称中有限定词,例如Ms.,Dr.,Jr。或III,那么您将不会获得令人满意的结果。此外,如果姓氏包含空格(例如“ John van Kamp”或“ Mary Anne St. Marie”),或者姓氏根本不包含空格,那么您也将无法获得满意的结果。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12383)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Separating_Names_into_Individual_Columns [将名称分隔为单独的列]。