How to Extract Number from String in VBA in 3 Minutes (Excel)

Written by Kasper Langmann

Visual Basic for Applications (VBA) is a powerful tool that allows Excel users to automate tasks and enhance their spreadsheets’ functionality. One common task that VBA can simplify is extracting numbers from strings. This operation can be crucial in data analysis, where information is often mixed in with irrelevant characters. In this guide, we will walk you through the process of extracting numbers from strings in VBA in just three minutes.

Understanding Strings and Numbers in VBA

In VBA, a string is a sequence of characters. It can include letters, numbers, and special characters. On the other hand, a number is a numerical value that can be used in mathematical operations. When a number is part of a string, VBA treats it as a character, not a numerical value. Therefore, if you want to perform calculations using these numbers, you must first extract them from the string.

Extracting numbers from strings in VBA involves using built-in functions and writing custom code. The process can seem complex if you’re new to VBA, but with a little practice, you’ll be able to perform this task with ease.

Preparation: Setting Up Your VBA Environment

Before we dive into the extraction process, it’s important to ensure your VBA environment is set up correctly. Open Excel and press Alt + F11 to open the VBA editor. Here, you can write and execute your VBA code.

If you don’t see the VBA editor, you may need to enable it. Go to File > Options > Customize Ribbon, and check the box for Developer. This will add the Developer tab to your Excel ribbon, where you can access the VBA editor.

Step-by-Step Guide: Extracting Numbers from Strings in VBA

Step 1: Declare Your Variables

First, you’ll need to declare your variables. In VBA, you use the Dim statement to declare a variable. For this task, you’ll need a string variable to hold the original string and a string variable to hold the extracted number.

Here’s how you declare these variables:

Dim originalString As String
Dim extractedNumber As String

Step 2: Assign Values to Your Variables

Next, assign values to your variables. The original string should contain the text you want to extract the number from. The extracted number should be an empty string, as it will be filled with the extracted number.

Here’s how you assign values to your variables:

originalString = "Your string goes here"
extractedNumber = ""

Step 3: Write a Loop to Extract the Number

Now, you’re ready to write the code that will extract the number from the string. This involves writing a loop that goes through each character in the string. If the character is a number, it’s added to the extractedNumber variable.

Here’s how you write this loop:

Dim i As Long
For i = 1 To Len(originalString)
    If IsNumeric(Mid(originalString, i, 1)) Then
        extractedNumber = extractedNumber & Mid(originalString, i, 1)
    End If
Next i

Step 4: Convert the Extracted Number to a Numeric Data Type

Finally, you’ll need to convert the extracted number from a string to a numeric data type. This will allow you to use it in mathematical operations. You can do this using the Val function.

Here’s how you convert the extracted number:

Dim number As Double
number = Val(extractedNumber)


Extracting numbers from strings in VBA is a common task in data analysis. Although it may seem complex at first, with a little practice, you’ll be able to perform this task with ease. Remember to declare your variables, assign values to them, write a loop to extract the number, and convert the extracted number to a numeric data type. With these steps, you can extract numbers from strings in VBA in just three minutes.

Keep practicing and exploring VBA’s capabilities. The more you use it, the more you’ll discover its power and versatility. Happy coding!