There is no inbuilt function in Excel to extract the numbers from a string in a cell (or vice versa – remove the numeric part and extract the text part from an alphanumeric string). However, this can be done using a cocktail of Excel functions or some simple VBA code. Let me first show you what I am talking about. Suppose you have a data set as shown below and you want to extract the numbers from the string (as shown below):
The method you choose will also depend on the version of Excel you’re using:
For versions prior to Excel 2016, you need to use slightly longer formulas For Excel 2016, you can use the newly introduced TEXTJOIN function VBA method can be used in all the versions of Excel
Click here to download the example file
Extract Numbers from String in Excel (Formula for Excel 2016)
This formula will work only in Excel 2016 as it uses the newly introduced TEXTJOIN function. Also, this formula can extract the numbers that are at the beginning, end or middle of the text string. Suppose you have the dataset as shown below and you want to extract the numbers from the strings in each cell: Below is the formula that will give you numeric part from a string in Excel.
This is an array formula, so you need to use ‘Control + Shift + Enter‘ instead of using Enter. In case there are no numbers in the text string, this formula would return a blank (empty string). How does this formula work? Let me break this formula and try and explain how it works:
ROW(INDIRECT(“1:”&LEN(A2))) – this part of the formula would give a series of numbers starting from one. The LEN function in the formula returns the total number of characters in the string. In the case of “The cost is USD 100”, it will return 19. The formulas would thus become ROW(INDIRECT(“1:19”). The ROW function will then return a series of numbers – {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19} (MID(A2,ROW(INDIRECT(“1:”&LEN(A2))),1)*1) – This part of the formula would return an array of #VALUE! errors or numbers based on the string. All the text characters in the string become #VALUE! errors and all numerical values stay as-is. This happens as we have multiplied the MID function with 1. IFERROR((MID(A2,ROW(INDIRECT(“1:”&LEN(A2))),1)*1),””) – When IFERROR function is used, it would remove all the #VALUE! errors and only the numbers would remain. The output of this part would look like this – {“”;””;””;””;””;””;””;””;””;””;””;””;””;””;””;””;1;0;0} =TEXTJOIN(“”,TRUE,IFERROR((MID(A2,ROW(INDIRECT(“1:”&LEN(A2))),1)*1),””)) – The TEXTJOIN function now simply combines the string characters that remains (which are the numbers only) and ignores the empty string.
Download the Example File You can also use the same logic to extract the text part from an alphanumeric string. Below is the formula that would get the text part from the string: A minor change in this formula is that IF function is used to check if the array we get from MID function are errors or not. If it’s an error, it keeps the value else it replaces it with a blank. Then TEXTJOIN is used to combine all the text characters.
Extract Numbers from String in Excel (for Excel 2013/2010/2007)
If you have Excel 2013. 2010. or 2007, you can not use the TEXTJOIN formula, so you will have to use a complicated formula to get this done. Suppose you have a dataset as shown below and you want to extract all the numbers in the string in each cell.
The below formula will get this done: In case there is no number in the text string, this formula would return blank (empty string). Although this is an array formula, you don’t need to use ‘Control-Shift-Enter’ to use this. A simple enter works for this formula. Credit to this formula goes to the amazing Mr. Excel forum. Again, this formula will extract all the numbers in the string no matter the position. For example, if the text is “The price of 10 tickets is USD 200”, it will give you 10200 as the result.
Separate Text and Numbers in Excel Using VBA
If separating text and numbers (or extracting numbers from the text) is something you have to often, you can also use the VBA method. All you need to do is use a simple VBA code to create a custom User Defined Function (UDF) in Excel, and then instead of using long and complicated formulas, use that VBA formula. Let me show you how to create two formulas in VBA – one to extract numbers and one to extract text from a string.
Extract Numbers from String in Excel (using VBA)
In this part, I will show you how to create the custom function to get only the numeric part from a string. Below is the VBA code we will use to create this custom function: Here are the steps to create this function and then use it in the worksheet:
Go to the Developer tab. Click on Visual Basic (You can also use the keyboard shortcut ALT + F11) In the VB Editor backend that opens, right-click on any of the workbook objects. Go to Insert and click on Module. This will insert the module object for the workbook. In the Module code window, copy and paste the VBA code mentioned above. Close the VB Editor.
Now, you will be able to use the GetText function in the worksheet. Since we have done all the heavy lifting in the code itself, all you need to do is use the formula =GetNumeric(A2). This will instantly give you only the numeric part of the string.
Note that since the workbook now has VBA code in it, you need to save it with .xls or .xlsm extension. Download the Example File In case you have to use this formula often, you can also save this to your Personal Macro Workbook. This will allow you to use this custom formula in any of the Excel workbooks that you work with.
Extract Text from a String in Excel (using VBA)
In this part, I will show you how to create the custom function to get only the text part from a string. Below is the VBA code we will use to create this custom function: Here are the steps to create this function and then use it in the worksheet:
Go to the Developer tab. Click on Visual Basic (You can also use the keyboard shortcut ALT + F11) In the VB Editor backend that opens, right-click on any of the workbook objects. Go to Insert and click on Module. This will insert the module object for the workbook. If you already have a module, double-click on it (no need to insert a new one if you already have it). In the Module code window, copy and paste the VBA code mentioned above. Close the VB Editor.
Now, you will be able to use the GetNumeric function in the worksheet. Since we have done all the heavy lifting in the code itself, all you need to do is use the formula =GetText(A2). This will instantly give you only the numeric part of the string.
Note that since the workbook now has VBA code in it, you need to save it with .xls or .xlsm extension. In case you have to use this formula often, you can also save this to your Personal Macro Workbook. This will allow you to use this custom formula in any of the Excel workbooks that you work with. In case you’re using Excel 2013 or prior versions and don’t have
CONCATENATE Excel Ranges (with and without separator). A Beginner’s Guide to Using For Next Loop in Excel VBA. Using Text to Columns in Excel. How to Extract a Substring in Excel (Using TEXT Formulas). Excel Macro Examples for VBA Beginners. Separate Text and Numbers in Excel
You might want to also consider the decimal symbol (period/dot “.” for North America, or comma “,” depending on the locale/country) In most cases of a get numeric, you’ll want the decimal I was processing US$1,425K and I would get 1425 (the comma isn’t relevant) But when I had US$250.5K, I would get 12505. In this case, the desired number is 250.5 (the decimal is relevant) So, I added Or Mid(CellRef, i, 1)=”.” for my purposes Note that other countries would have US$1.425,5K Here the challenging