Explanation

In this example, the goal is to extract just the domain name from a list of email addresses. In the current version of Excel, the easiest way to do this is with the TEXTAFTER function or the TEXTSPLIT function. In older versions of Excel, you can use a formula based on the RIGHT, LEN, and FIND functions. All three options are explained below.

TEXTAFTER function

The TEXTAFTER function returns the text that occurs after a given delimiter. The generic syntax for TEXTAFTER supports quite a number of options:

=TEXTAFTER(text,delimiter,[instance_num],[match_mode],[match_end], [if_not_found])

However, most of the inputs are optional and for this problem, we only need to provide the first two arguments:

=TEXTAFTER(text,delimiter)

Here, text represents the text string to parse, and delimiter represents the place at which to begin extracting. Since all email addresses contain the @ character separating the name from the domain, we can extract the domain with a simple formula like this:

=TEXTAFTER(C5,"@")

As the formula is copied down the table, it extracts the domain name from each of the emails as shown in the worksheet. For more information, see How to use the TEXTAFTER function .

Note: You can use the TEXTBEFORE function to extract the name portion of the email.

TEXTSPLIT function

Another easy way to solve this problem is with the TEXTSPLIT function , which is designed to split a text string at a given delimiter and return all pieces of the string in a single step. To solve this problem with TEXTSPLIT, use a formula like this in cell D5:

=TEXTSPLIT(C5,"@")

As the formula is copied down, TEXTSPLIT will split the email at the @ character and return the name and the domain in one step:

Get domain from email with the TEXTSPLIT function - 1

The advantage of this approach is that you get both the email and the domain with a single formula. For more details on TEXTSPLIT, see How to use the TEXTSPLIT function .

Legacy Excel

In older versions of Excel that do not provide the TEXTAFTER or TEXTSPLIT functions, you can use a formula based on the RIGHT , LEN , and FIND functions:

=RIGHT(C5,LEN(C5)-FIND("@",C5))

At the core, this formula extracts characters from the right with the RIGHT function, using FIND and LEN to figure out how many characters to extract. C5 contains the text “john.doe123@abc.com”, so LEN returns 19 characters:

LEN(C5) // returns 19

FIND locates the “@” character inside the email address “john.doe123@abc.com”. The “@” character is the 12th character, so FIND returns 12:

FIND("@",C5) // returns 12

Next, 12 is subtracted from 19, and the result (7) is returned directly to the RIGHT function as the num_chars argument. The RIGHT function then extracts 7 characters from the email address, starting from the right , and returns “abc.com” as a final result. The complete formula is evaluated like this:

=RIGHT(C5,LEN(C5)-FIND("@",C5))
=RIGHT(C5,19-12)
=RIGHT(C5,7) // returns "abc.com"

Although this formula is more complicated than the formulas based on TEXTAFTER or TEXTSPLIT, it will work just fine. If you get unexpected results, you might need to run the email addresses through the TRIM function to strip leading or trailing spaces, since trailing spaces will cause incorrect results. Once you have trimmed email addresses, apply the formula above.

Explanation

In this example, the goal is to extract the domain name from a list of URLs. In the current version of Excel, the easiest way to do this is to use a formula based on the TEXTAFTER and TEXTBEFORE functions. In older versions of Excel, you can use a more complicated formula based on the LEFT and FIND functions. Both approaches are explained below.

TEXTAFTER with TEXTBEFORE

The formula in the worksheet shown uses the TEXTAFTER and TEXTBEFORE functions to extract domain names from URLs. As the names imply, the TEXTAFTER function extracts text that occurs after a given delimiter, and the TEXTBEFORE function extracts text that occurs before a given delimiter. To solve this problem, each function needs just two arguments, text and delimiter :

=TEXTAFTER(text,delimiter)
=TEXTBEFORE(text,delimiter)
  • text - the text string to split
  • delimiter - the place at which to split the text

In the worksheet shown, the formula in cell C5 uses both functions like this:

=TEXTBEFORE(TEXTAFTER(B5,"//"),"/")

This is an example of nesting one function inside another. Working from the inside out, the TEXTAFTER function is first used to strip the “protocol” from the URL. In this case, the protocol is the text “https://” or “http://”. To locate the protocol, we use “//” for the delimiter and provide B5 for text:

TEXTAFTER(B5,"//")

TEXTAFTER locates the double forward slash “//” and returns all text that follows. With the text “https://exceljet.net/formulas/" in cell B5, TEXTAFTER returns “exceljet.net/formulas/”. This text is then handed off directly to the TEXTBEFORE function as the text argument for further processing:

=TEXTBEFORE("exceljet.net/formulas/","/")

Here, TEXTBEFORE is configured to use a single forward slash “/” for the delimiter . TEXTBEFORE locates the single forward slash “/” and returns all previous text. The final result is the domain “exceljet.net”.

Remove the www

If you want to remove the “www” subdomain from the domain when it is extracted, you can nest the original formula inside the SUBSTITUTE function like this:

=SUBSTITUTE(TEXTBEFORE(TEXTAFTER(url,"//"),"/"),"www.","")

SUBSTITUTE is configured to replace “www.” with an empty string (”"). If “www.” is not found, SUBSTITUTE returns the original result.

Legacy Excel

In older versions of Excel without the TEXTBEFORE or TEXTAFTER functions, this is a more challenging problem. For a quick solution, you can use a formula like this:

=LEFT(B5,FIND("/",B5,9)-1)
Extracting the domain from a URL in older versions of Excel - 2

At the core, this formula is extracting characters from the left side of the URL with the LEFT function , and using the FIND function to figure out how many characters to extract. First, FIND locates the “/” character in the URL, starting at the 9th character:

FIND("/",B5,9)

This is the “clever” part of the formula. URLs begin with something called a “protocol” which looks like this:

http:// https:// ftp:// sftp://

By starting at the 9th character, the protocol is skipped, and the FIND function will return the location of the third instance of “/”, which is the first instance after the double slash in the protocol. With the text “https://exceljet.net/formulas/" in cell B5, the third instance of “/” is the 21st character in the URL, so FIND returns the number 21. The LEFT function then extracts 21 characters from the URL, starting at the left. The result is the domain name with a trailing slash, “https://exceljet.net/". To get the domain name without a trailing slash, we subtract 1 from the result of FIND like so:

=LEFT(B5,FIND("/",B5,9)-1)

One limitation of this formula is that it leaves the protocol (i.e. “https://”) in place. To remove the protocol in a second step , you can use a formula like this:

=MID(C5,FIND("//",C5)+2,LEN(C5))

Essentially, this formula uses the MID function and the FIND function to extract text starting after the “//”. The number of characters to extract is provided by the LEN function , which returns the number of characters in cell C5. This is actually a hack to keep things simple. LEN will return 30 in this case, but there are only 20 characters left to extract after the “//”. This works because when the number of characters ( num_chars ) exceeds the remaining string length MID will extract all remaining text. Using LEN to provide num_chars is a simple way to give MID a number that is always large enough.