我有一列名字写成:
“姓,名”
我想要另一个列,此名称列表写为:
“名字姓氏”
那么,如何将字符串从 "lastName, firstName" 切换为 "firstName LastName" ?
我有一列名字写成:
“姓,名”
我想要另一个列,此名称列表写为:
“名字姓氏”
那么,如何将字符串从 "lastName, firstName" 切换为 "firstName LastName" ?
如果名字在 A2 中,请尝试在 B2 中复制此公式
=MID(A2&" "&A2,FIND(" ",A2)+1,LEN(A2)-1)
在单元格中输入数据,例如
Brown, John
Green, Bob
Smith, Will
(请注意,在这种情况下,逗号是系统将用于分隔条目的分隔符)突出显示这些单元格。
单击“数据”选项卡,单击“文本到列”。
选择提供的选项。
为我工作 =RIGHT(C3,LEN(C3)-LEN(LEFT(C3,FIND(",",C3)-1))-1) & " " & LEFT(C3,FIND(",",C3 )-1)
如果单个单元格 (A2) 不包含诸如“名字姓氏”之类的错误,巴里的回答是正确的——这通常是这种情况。
因此,要处理“Last,First”或“First Last”的单元格数据,我们需要比较单元格并采取适当的措施。另请注意,在我的示例中,我将名字移到了它自己的列中,将姓氏移到了它自己的列中。您当然可以将它们合并到一个列中。
首先,让我们分解我们需要的东西。当单元格内容中有“,”时,这将返回名字:(假设您要拆分的字段在A2中,根据需要调整)
=MID(A2;FIND(",";A2)+2;99)
如果没有,这将返回名字:
=MID(A2;1;FIND(" ";A2))
对于有逗号时的姓氏:
=MID(A2;1;FIND(",";A2)-1)
没有姓氏:
=MID(A2;FIND(" ";A2)+1;99)
因此,我们需要测试字符串中是否有“,”,如果没有则处理错误情况(FIND 在未找到时返回#value,ISERROR() 可以测试)。可选地(和我的方法)是检查 FIND 的返回是否产生了一个数字(错误不会)。在这种情况下,“找不到它的错误条件”将产生一个非数字 #Value。
=IF( ISNUMBER( FIND(",";A2)); MID(A2;FIND(",";A2)+2;99); MID(A2;1;FIND(" ";A2)))
对姓氏执行相同的操作如下所示:
=IF( ISNUMBER( FIND(","; A2)); MID(A2;1;FIND(",";A2)-1); MID(A2;FIND(" ";A2)+1;99))
请注意,我的解决方案是使用我的电子表格应用程序 OpenOffice。我认为 Excel 有不同的查找方法(搜索?) - 所以根据需要进行调整。
上面的答案是不正确的。事实上,对于我自己的名字,Jay Jacob Wind,这个公式是错误的。正确的公式是:
假设 Last, First 在 A 列中,用一个逗号和一个空格键分隔
对于名字:
=mid(A2,find(",",A2)+2,99)
对于姓氏:
=mid(A2,1,find(",",A2)-1)
放在一起,假设 B 列是名字,C 列是姓氏 =B2&" "&C2
或简单地(但更复杂)
=mid(A2,find(",",A2)+2,99)&" "&mid(A2,1,find(",",A2)-1)
但我喜欢将它们分成两列,然后将它们连接起来