我在 Excel 中有一个班级的姓名列表。它包含一列“全名”。全名有 3 个部分,即:1. 名字 (FN) 2. 中间名 (MN) 3. 姓氏 (SN)
例如:Aashish Ajit Handa (FN) (MN) (SN)
我希望能够将其更改为 Aashish A. Handa,即应搜索中间名,并且第一个字母应替换 (MN)。中间名的字符长度不同。
答案1
答案2
解决此问题的一种非宏方法是将 3 个名称分解为一个公式并将其合并。我通常会为此使用名称管理器,但也将显示不使用名称管理的扩展公式。(所有这些示例都将使用 a1 单元格作为名称,名称为名称(空格)名称(空格)名称格式步骤 1 获取名字。
Fname=+LEFT(Sheet1!A1,FIND(" ",Sheet1!A1)) 这将搜索第一个空格并返回左侧的所有内容
Lname=+RIGHT(Sheet1!A1,LEN(Sheet1!A1)-FIND(" ",Sheet1!A1,1+LEN(Fname))) 这将返回姓氏。我们需要姓和名来括住答案。这假设只有 2 个空格,并通过在第一个空格后开始查找来搜索第二个空格。
Mname=MID(Sheet1!A1,1+LEN(Fname),LEN(Sheet1!A1)-LEN(Fname)-LEN(Lname)) 这将使用 Fname 和 Lname 括起来返回完整的中间名。
把一切放在一起
- =(Fname&LEFT(MName,1)&". " &Lname) 如果不想要句点,则 left(mname,1) 后面的 ". " 可以是 " "。
在一行中不使用名称
- =LEFT(A1,FIND(" ",A1))&LEFT(MID(A1,FIND(" ",A1)+1,1))&". "&RIGHT(A1,LEN(A1)-FIND(" ",A1,1+FIND(" ",A1)))
这种方法的问题在于,
- 对数据结构问题敏感,在 iferror 前面加上一个 ,"名称格式错误",例如
- =+IFERROR(Fname&LEFT(MName,1)&" " &Lname,"名称格式错误")
可能还需要进行替换,将双空格替换为单空格。
- Aname=substitute(a1," "," ")
这取决于您的数据源是否完全遵循格式。