Split First and Last Names

Hey, regarding first name, a formula that also takes into account that the full name was filled partially and may include only the first name would look like:

IF(SEARCH(" “,{Full_Name}) > 0, LEFT({Full_Name}, SEARCH(” ",{Full_Name})-1), {Full_Name})

This formula will not result in an error if there are no spaces in full name.

2 Likes

This works fine for all fields except lookup fields for me. So when I try to split first and last names from a lookup field, its returning errors. Any ideas?

A lookup field returns an array, not a string, and doesn’t auto-convert to a string when a formula asks for it. To convert an array to a string, concatenate it with an empty string. In your formula, anywhere that you have:

{Client Name}

you will need to change it to:

{Client Name} & ""
2 Likes

As this is directly regarding the codes in @W_Vann_Hall’s demo base in this thread I’ll ask my question here rather than to start a new topic.

My {WholeName} field follow the format “FirstName MiddleName LastName (neé MaidenName)”.
I want to break it down to four fields

  1. First name
  2. Middle name
  3. Last name
  4. Maiden name

I can get it to return 1-3 correctly as long as there is no maiden name, if there is it no longer provides the correct last name. No supprise there.

For my purposes I assume it would be best to treat (neé MaidenName) as a suffix and by that logic remove it in {TrimSuffix}.

I tried the following code to strip the MaidenName-part

SUBSTITUTE(
IF(
   OR(FIND(" Jr",TrimName)=LEN(TrimName)-3,
      FIND(" Sr",TrimName)=LEN(TrimName)-3,
      FIND(" II",TrimName)=LEN(TrimName)-3,
      FIND(" IV",TrimName)=LEN(TrimName)-3),
   LEFT(TrimName,LEN(TrimName)-4),
   IF(
      OR(FIND(" Jr.",TrimName)=LEN(TrimName)-4, 
         FIND(" Sr.",TrimName)=LEN(TrimName)-4,
         FIND(" III",TrimName)=LEN(TrimName)-4),
      LEFT(TrimName,LEN(TrimName)-5),
   IF(
      FIND("(",TrimName),
      LEFT(TrimName, SEARCH("(", TrimName)-1),
   TrimName))),",",""
)

It removes the whole maiden name part okay, but now {Last Name} no longer outputs a last name at all where a maiden name is present in {WholeName}. Any and all help to adjust this would be greatly appreciated. If I can achieve a last name here then I can get the fourth field, maiden name, on my own.

Hey guys, thanks a lot for great tips!

How would the formula look like if I want to get first name and the first letter of the last name? The Name field is pretty uniform with First and Last name, no middle names.

Thanks in advance!

Welcome to the community, @Meerim_Asylbekova! :smiley: This should work, replacing “Name” with your actual field name:

IF(Name, REGEX_EXTRACT(Name, ".* ."))
1 Like

This worked like a charm! Thank you so much, Justin!

1 Like

Hello - I am trying to use the above formula to extrat all parts except the Last Name. I keep running into an an error that is referencing an unclosed parenthesis.

The formula has 7 left parenthesis but only 6 right. I have tried to insert a closing parenthesis in areas that I thought were logical but still keep coming up with an error. Where does the closing parenthesis go.

REPLACE({Name},FIND("~",SUBSTITUTE({Name}," “,”~",LEN({Name}) -

LEN(SUBSTITUTE({Name}," “,”"))))),LEN({Name},"")

Nevermind, I found it.

This worked:

REPLACE({Name},FIND("~",SUBSTITUTE({Name}," “,”~",LEN({Name}) -

LEN(SUBSTITUTE({Name}," “,”")))),LEN({Name}),"")

1 Like

Question for you that is related to this, but almost in the opposite direction.

We have 2 email address, essentially. We have a standard first.last@email.com and first.last@sso.com (for single sign on purposes). Could I use a formula in the SSO column to copy over the first.last@ from the email column and finish it with first.last@sso.com

@W_Vann_Hall

Unfortunately @W_Vann_Hall hasn’t logged into the forum in nearly two years. We hope that he’s all right, but the likelihood of him replying is slim, so I’m going to chime in on this.

In short: yes, this is possible. Instead of copying the first part, though, it’s easier to replace the domain:

SUBSTITUTE(Email, "@email.com", "@sso.com")

Thank you, that worked kind of. The issue I have now is that not all domains in the email column are the same. How can I account for the not as commonly used oddball email domain contained in the email field. All domains in the sso field are still the same fyi. Thanks again for your help.

Thanks for the clarification. I got the impression that those domains were all identical. If not, then you can use a regular expression to replace any domain:

IF(Email, REGEX_REPLACE(Email, "@.*", "@sso.com"))

The above is great, but I don’t care about suffixes. Just how to split the first and last name. How do I do that?

First name:

IF({Full Name}, REGEX_EXTRACT({Full Name}, "[^ ]*"))

Last name:

IF({Full Name}, REGEX_EXTRACT({Full Name}, "[^ ]*$"))

Screen Shot 2022-08-09 at 6.51.26 PM

Both of these use the [^ ]* combination, which captures any number of non-space characters. By default the source string is parsed from left to right, so the first expression will stop once it hits the space between the first and last name. The $ at the end of the second expression tells the parser to begin at the end of the string, effectively working backwards until it hits the same separating space. Because the space is ignored in both cases, there’s no need to trim anything.