【问题标题】:Formula for text before and after space in a string字符串中空格前后的文本公式
【发布时间】:2015-01-12 19:22:25
【问题描述】:

我正在尝试根据给定的人的名字和姓氏创建用户名。通常,我们使用第一个名字和姓氏作为用户名。但是,现在我们的许多用户都有 2 个姓氏,有时还包括一个连字符。我正在尝试创建一个代码,它给我第一个首字母,FIRST 姓氏的第一个字母,然后是姓氏。

例如——

艾米·史密斯-琼斯 == 阿斯乔内斯

这是我目前正在使用的,当然,它会产生“asmithjones”。

=LOWER(LEFT(A1,1)&SUBSTITUTE(SUBSTITUTE(A2,"-","")," ",""))

我已经尝试了一些变体,但没有运气。

=LOWER(LEFT(A1,1)&LEFT(A2,1)&SUBSTITUTE(SUBSTITUTE(A2,"-","")," ",""))

有没有办法同时生成第一个字符串的第一个字母和第二个字符串的全文?

编辑

我想出了一些办法,但现在我面临另一个挑战

=IFERROR(LOWER(LEFT(D2,1)&SUBSTITUTE(SUBSTITUTE(RIGHT(F2,LEN(F2)-FIND(" ",F2&" ")),"-","")," ","")),LOWER(LEFT(D2,1)&SUBSTITUTE(SUBSTITUTE(F2,"-","")," ","")))

某些用户有 1 个姓氏,因此如果公式遇到这些姓氏,则适用。但我有一些人有连字符而不是空格。 SUSTITUTE 函数同时考虑了这两种情况,但是我怎样才能让 FIND 函数做同样的事情?

【问题讨论】:

    标签: string excel-formula substitution


    【解决方案1】:

    试试:

    =LEFT(A1,1)&MID(A1,(SEARCH(" ",A1)+1),1)&RIGHT(A1,(LEN(A1)-(SEARCH(" ",(SUBSTITUTE(A1,"-"," ")),(SEARCH(" ",A1)+1)))))
    

    【讨论】:

      【解决方案2】:

      根据您的编辑,我假设名字在 D 列,姓在 F 列:

      =LOWER(LEFT(D2) & IFERROR(LEFT(F2)&MID(F2,FIND("-",SUBSTITUTE(F2," ","-"))+1,99), F2))
      

      SUBSTITUTE 将姓氏中的空格更改为连字符,因此FIND 只能查找连字符。

      如果找不到连字符(替换后),IFERROR 会失败,在这种情况下会返回整个姓氏。

      示例:

      【讨论】:

      • 这太棒了!非常感谢!看起来我的有点古怪。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2019-01-13
      • 1970-01-01
      • 2013-10-19
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多