How to extract text between two characters or words in Excel and Google Sheets

The complete guide on how to find and extract text from string between two characters or words in Excel and Google Sheets.

When working with long strings, you may often want to extract a specific part of them for closer examination. In Microsoft Excel and Google Sheets, there are several ways to get text between two characters or substrings. In this article, we'll discuss the fastest and most effective ones.

How to extract text between two characters in Excel

To extract text between two different characters, you can use this generic formula:

MID(cell, SEARCH(char1, cell) + 1, SEARCH(char2, cell) - SEARCH(char1, cell) - 1)

For example, to get text between parentheses from the string in A2, the formula is:

=MID(A2, SEARCH("(", A2)+1, SEARCH(")", A2) - SEARCH("(", A2) -1) Extracting text between two characters in Excel

In a similar manner, you can extract text between braces, square brackets, angle brackets, and so on.

Useful tip! If you are dealing with numbers and want the result to be a number and not a numeric string, then additionally perform some arithmetic operation that does not change the result, e.g. add 0 or multiply by 1.

For example:

=MID(A2, SEARCH("(", A2)+1, SEARCH(")", A2) - SEARCH("(", A2) -1) *1

Please notice the default right alignment of the extracted values in cells typical for numbers: Getting number between two characters in Excel

How this formula works

The base of this formula is the MID function that pulls a given number of characters from a string, starting at a specific position:

MID(text, start_num, num_chars)

Text is the cell containing the original string (A2).

The starting position (start_num) is the character that immediately follows the opening parenthesis. So, you find the position of "(" using the SEARCH function and add 1 to it:

SEARCH("(", A2) +1

To figure out how many characters to extract (num_chars), you locate the position of the closing parentheses and subtract the position of the opening parentheses from it. Additionally, you subtract 1 to leave out the second parentheses:

SEARCH(")", A2) - SEARCH("(", A2) -1

Having all the necessary details, the MID function brings you exactly what you want – text between parentheses in our case:

MID(A2, 19, 2)

As MID is a text function, it always produces a string, even if the extraction only includes numbers. To get a number as the final result, we multiply MID's output by one or add zero to it. If you are extracting text, this operation is not required.

Extract text between two strings / words in Excel

To pull text between two strings or words, the formula is quite similar to the one discussed above. Only a couple of different adjustments are needed: to remove the delimiter-words from the final result, you add and subtract the length of the words themselves returned by the LEN function:

MID(cell, SEARCH(word1, cell) + LEN(word1), SEARCH(word2, cell) - SEARCH(word1, cell) - LEN(word1))

For example, to extract substrings between the words "start" and "end", the formula is:

=IFERROR(MID(A2, SEARCH("start ", A2) + LEN("start "), SEARCH(" end", A2) - SEARCH("start ", A2) - LEN("start ")), "") Formula to extract text between two words in Excel

Tips:

  • To avoid leading and trailing spaces in the results, include a space after word 1 such as "start " and before word 2 such as " end". Alternatively, you can use the TRIM function to get rid of extra spaces.
  • If one or both of the specified words are not found in the original string, the formula will return the #VALUE! error. To catch that error and replace it with an empty string (""), use the IFERROR function like shown in the above example.

Get text between two instances of the same character in Excel

To extract text from a string between two occurrences of the same character, the generic formula is:

MID(cell, SEARCH(char, cell) +1, SEARCH (char, cell, SEARCH (char, cell) +1) - SEARCH (char, cell) -1)

For example, to extract text between double quotes from the string in A2, you enter this formula in B2:

=MID(A2, SEARCH("""", A2) +1, SEARCH("""", A2, SEARCH("""",A2) +1) - SEARCH("""", A2) -1)

Please pay attention to the way you search for a double quote in Excel. Between the outer quotes, another set of quotes is entered. The first quote is used to escape a special meaning of the second quote so that "" in between the outermost quotes stands for a single double quote.

Another way to supply a double quote (") to an Excel formula is by using the CHAR function with the code number 34.

=MID(A2, SEARCH(CHAR(34), A2) +1, SEARCH(CHAR(34), A2, SEARCH(CHAR(34),A2) +1) - SEARCH(CHAR(34), A2) -1) Get text between double quotes.

How this formula works

The first two arguments of this MID formula raise no questions:

  • A2 is the text string to search, and
  • SEARCH("""", A2) +1 is the starting number, i.e. the position of the first quote +1.

The trickiest part is calculating the number of characters to extract (num_chars):

First, we find the position of the second quote by nesting one SEARCH function within another.

SEARCH("""", A2, SEARCH("""",A2) +1)

From the position of the 2nd quote (in A2 it's 27), you subtract the position of the 1st quote (in A2 it's 10), and then subtract 1 to exclude the quote itself from the result:

SEARCH("""", A2, SEARCH("""",A2) +1) - SEARCH("""", A2) -1

The above formula returns 16, which is the last missing piece of a puzzle the MID function needs:

=MID(A2, 10+1, 16)

Simply put, MID searches the cell A2 starting from the character after the 1st quote (10+1) and returns the next 16 characters.

Case-sensitive Excel formula to extract text between characters

As you probably know, in Microsoft Excel there are two functions to search strings: SEARCH (case-insensitive) and FIND (case-sensitive).

In situation when the delimiter is a letter in a specific case, just use FIND instead of SEARCH. To illustrate the difference, let's compare the two formulas below.

From the string in A2, suppose you want to extract a number between two uppercase letters "X".

The SEARCH function works incorrectly in this case because it does not distinguish between "x" and "X":

=MID(A2, SEARCH("X", A2) +1, SEARCH("X", A2, SEARCH("X",A2) +1) - SEARCH("X", A2) -1) +0

As the result, the text between "x" is extracted, and not between "X" that we are looking for: Case-insensitive formula to get text between two characters

While the case-sensitive FIND function works beautifully:

=MID(A2, FIND("X", A2) +1, FIND("X", A2, FIND("X",A2) +1) - FIND("X", A2) -1) +0

And brings exactly the result we need: Case-sensitive formula to extract text between two characters

Extracting text between characters in Excel 365

In Excel 365, you can get text between characters more easily by using the TEXTBEFORE and TEXTAFTER functions together.

TEXTBEFORE(TEXTAFTER(cell, char1), char2)

For example, to extract text between parentheses, the formula is as simple as this:

=TEXTBEFORE(TEXTAFTER(A2, "("), ")") Simple formula to extract text between parentheses

This formula also works nicely for extracting text between two occurrences of the same character.

For instance, to get text between double quotes, the formula takes this form:

=TEXTBEFORE(TEXTAFTER(A2, """"), """") Excel 365 formula to get text between double quotes

By default, both the TEXTAFTER and TEXTBEFORE functions are case-sensitive. To disable case-sensitivity, you set the 4th argument (match_mode) to 1 or TRUE.

For example, the case-insensitive formula below recognizes both the lowercase "x" and uppercase "X" as the delimiter:

=TEXTBEFORE(TEXTAFTER(A2, "x ", ,1), " x", ,1) +0 Case-insensitive formula to extract text between characters in Excel 365

How this formula works

Working from the inside out, you use the TEXTAFTER function to extract text after the opening parentheses:

TEXTAFTER(A2, "(")

And serve the returned substring to TEXTBEFORE, asking it to find the closing parentheses in that substring and return the text before it.

TEXTBEFORE("Unexpected error)", ")")

Done :)

Get text between two characters in Google Sheets

To find text between two characters in Google Sheets, you don't need to reinvent the wheel :)

The MID SEARCH combinations used in Excel work flawlessly in Google spreadsheets too.

For instance, to get text between brackets, the formula is:

=MID(A2, SEARCH("[", A2)+1, SEARCH("]", A2) - SEARCH("[", A2) -1) Getting text between brackets

To extract text between two commas, this is the formula to use: Extracting text between two commas

That's how to extract text between two characters or words in Microsoft Excel and Google spreadsheets. I thank you for reading and hope to see you on our blog next week!

Practice workbooks

Extract text between characters in Excel (.xlsx file)
Get text between characters in Google Sheets (online sheet)

26 comments

  1. A great way to convert US dates to UK format

    date in i4
    =DATEVALUE(TEXTBEFORE(TEXTAFTER(I4,"/"),"/")&"/"&TEXTBEFORE(I4,"/")&"/"&RIGHT(I4,4))

    US date = 12/6/2024

    TEXTBEFORE(TEXTAFTER(I4,"/"),"/") This produces the day

    &"/"& This produces the separator

    TEXTBEFORE(I4,"/") this produces the month

    RIGHT(I4,4) this produces the year if 4 digits

    will produce 06/12/2024 when formatted as a date.

  2. Hello,
    I have a string of book details in the following format:
    (Word Count) Title [Series Name] [Author Name]

    I was able to extract the Series Name with this:
    =MID(A1:A5, SEARCH("[", A1:A5)+1, SEARCH("] [", A1:A5) - SEARCH("[", A1:A5) -1)

    However, the following formula was unsuccessful in extracting the Author Name:
    =MID(A1:A5, SEARCH("] [", A1:A5)+1, SEARCH("]", A1:A5) - SEARCH("] [", A1:A5) -1)

    I'm using Google Sheets. Is there an alternate formula for this format?

    1. Hello ks,

      If you'd like to stick with MID, use this formula for Author Name:
      =SUBSTITUTE(SUBSTITUTE(TRIM(MID(A1, FIND("]", A1) + 1, LEN(A1) - FIND("]", A1))), "[", ""), "]", "")

      But there are 2 easier ways:
      One with REGEXEXTRACT:
      =REGEXEXTRACT(A1, "\[([^]]+)\]$")

      Another with the Extract tool, you'll get to know it in this blog post.

  3. This question inspired me to split names with variable number of parts into 3 columns. I use 365. The names have 2 to 5 parts so the number of delimiters, ie spaces, is variable.
    Column A FIRSTname MIDDLEname(s) LASTname
    Column B FIRSTname extract with =TEXTBEFORE(A2," ")
    Column C MIDDLEname(s) can have 0-3 strings extract with =IFNA(TEXTBEFORE(TEXTAFTER(A2, " "), " ",-1),"") ==>> note IFNA leaves cell empty if there is no middle name
    Column D LASTname extract with =TEXTAFTER(A2," ",-1)

    John Allen Jones John Allen Jones
    Sue Patty Alice Smith Sue Patty Alice Smith
    Rose Petal Blue Purple Object Rose Petal Blue Purple Object
    Joe franklin Joe franklin

  4. It would be REALLY helpful & much clearer if you didn't use parentheses or quotation marks (or any non-letter character that might be misinterpreted as PART of the prescribed formula) in your examples. It's so confusing because both parentheses & quotation marks are required in the formula! (an actual lol from me)

    Extracting text between characters in Excel 365:
    TEXTBEFORE(TEXTAFTER(A2, "("), ")")
    and
    =TEXTBEFORE(TEXTAFTER(A2, """"), """")

    maybe use TEXTBEFORE(TEXTAFTER(A2, "@"), "#")

    bankers like @yield# not people
    to extract the word yield

    especially since you put this without the quotations marks:
    TEXTBEFORE(TEXTAFTER(cell, char1), char2)

  5. What mods do I need to make if the enclosing characters are the same, please?

    e.g. the column contains:

    For 0 @I842@ INDI

    I need the text between the @ signs. I can do it with two formulas but can I do it in one?

    Regards

    Paul

  6. Hi
    whats the formula for this

    for example i have this

    (tu-35hg) sfdgj65hmn
    (mt657) hnbdbhd (fghjfj) (dfhghj)
    (jrutnb) dfhgdhd (yju56)
    (23435) fhduh

    want the result like this

    sfdgj65hmn (tu-35hg)
    hnbdbhd (fghjfj) (dfhghj) (mt657)
    dfhgdhd (yju56) (jrutnb)
    fhduh (23435)

    (whats between characters in the first of the sentence become the last)

    Thanks a lot

    1. you can just replace (*) by blank value. you will get the results.

  7. hello
    in column a i have some regions , for example
    a1 lazio
    a2 sardegna
    and so on

    column b contains city + region, for example
    b1 citta 1 lazio
    b2 lazio citta2
    b3 citta1 sardegna

    in column c i would like to do this : look to column b, if excel see one of the region that are in column a, extract it
    for example, in c1 it would appear lazio, in c3 it would appear sardegna

    the region are always in different position and have different lenght, how can i do this? thanks

  8. Hi
    Wondered if you could help me please. I’m trying to extract words between either “at” AND “on”
    OR
    “near” AND “on”.

    Example texts as follows:
    - I parked at Tesco on 12/03/2022
    - I parked near Marks and Spencer on 18/03/2022

    The required text to extract would therefore be:
    - Tesco
    - Marks and Spencer

    Is there one single formula I can use to ensure I’m picking up both instances of these please in excel?

    Grateful for any help. Thank you

    1. Hi!
      The text strings you want to extract do not have a common pattern. Therefore, using a single formula, it is impossible to extract them.

      1. Wouldn't the common delimitator be the 3rd and 4th space? I am having a similar issue with a string of names all in one cell. There are 3-6 first and last names all in A2. Is there a way for me to delimitate based on the spaces? I have the first one working but am having trouble with the next couple names.

        1. Hi!
          You can combine two text searches with the IFERROR function. Here is an example formula:

          =IFERROR(MID(A1,SEARCH(" at ",A1)+4,SEARCH(" on ",A1)-(SEARCH(" at ",A1)+4)), MID(A1,SEARCH(" near ",A1)+6,SEARCH(" on ",A1)-(SEARCH(" near ",A1)+6)))

          Hope this is what you need.

  9. Hi! I'm getting this data pulled into one cell:
    "_mczr_image: https://cdnv2.mycustomizer.com/2day-frames/63bef3a3926687c9d40b7e3d.png
    _mczr_designId: 63bef3a3926687c9d40b7e3f
    _mczr_mczrStoreId: 63a376b324d804f5c1239bfb
    _mczr_brand: 2day-frames
    _mczr_variantPrice: 82.00
    _mczr_productTitle: Custom Frame
    _mczr_productHandle: custom-frame
    Upload Photo: https://cdnv2.mycustomizer.com/2day-frames/63bef392d4e6cb96d3539e9e.png
    Size: 13x13
    Color: Grey
    Mat Board: Add Mat
    Acrylic: Add Acrylic"

    I just need to pull the links that follow "_mczr_image:" and "Upload Photo:" but not including these words, just the links. Where I'm getting stuck is that the character counts will vary for these based on the order details so they will likely be different all the time. I've tried the mid and search functions together but I must be doing something wrong.

  10. BEST EXCEL WEBSITE EVER!!!!!!!

  11. Hi!

    I have column titled "Description" where it has no fix format.

    (Quote)
    Refer to DLA Adjuster Fee and Surveyor Fee Notification Of Loss (NOL) MT Kakap - PT XX (PERSERO) QQ PT XX INTERNATIONAL SHIPPING - DOL: 10 September 2021 - MRBI Ref : MRID2021128
    (Unquote)

    For example for text above, how can I extract exactly the MRIDxxxxxx only. Sometimes the MRID is located mid sentence like example below:

    (Quote)
    Refer to DLA PT Asuransi XX Claim No: xxxx.xxx.xxx.xxx.xxxxxxx/xx/xx - Billing Facultative Reinsurance Claim Payment of PT. XX (PERSERO) TBK; PT Asuransi XX Ref. xxx.xxx.xxx.xx.xxxxx/xxx/xxx ; DOL 18-Jul-20; MRBI Ref : MRID2020057; Claim - Interim Payment.
    (Unquote)

    Thanks

  12. LD1-1101B1-GS000-NE3/BL/24/05_850*1350*200_NS
    how to make the formula for in between the value for 850. plz i can't find

  13. Thank you.

    I have a string like this MZK-USC-P31W-OP-01 in A2.

    How do I use a formula to extract P31W (output in A3) which comes after 2nd hyphen and before 3rd hyphen? Thank you.

      1. Hello, I have a similar problem where the splitting and taking from third column is not possible as it varies for different rows. In some cells, it will be after third and in some it will be after 7th etc. How do I extract it.

  14. i have data like this
    column 1 column 2
    18 ANY OUT OF 4 formula =NUMBERVALUE(LEFT(A1,SEARCH(" ",A1))) answer is 18
    formula =NUMBERVALUE(LEFT(A1,SEARCH(" ",A1))) answer is #value
    28 ANY OUT OF 4

    9 ANY OUT OF 4

    18 ANY OUT OF 4

    9 ANY OUT OF 4

    18 ANY OUT OF 4

    18 ANY OUT OF 4

    4 ANY OUT OF 4
    i want to get sum of column 1 in the end of column 1 get data of 1st two number

    please guide me the solution.

    thanks regards
    junaid iqbal

  15. Thank you!

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)