How to Quickly Filter Data Using Excel VBA in 3 Minutes

Written by Kasper Langmann

Excel VBA, or Visual Basic for Applications, is a powerful tool that can significantly enhance your data analysis capabilities in Excel. It allows you to automate repetitive tasks, create new functions, and even design custom user interfaces. One of the most common uses of VBA in Excel is for filtering data. This article will guide you through the process of quickly filtering data using Excel VBA in just three minutes.

Understanding Excel VBA

Before diving into the specifics of filtering data with VBA, it’s essential to have a basic understanding of what VBA is and how it works. VBA is a programming language developed by Microsoft that is used in many of their Office applications, including Excel. It’s a relatively simple language to learn, especially if you’re already familiar with Excel.

VBA allows you to create macros, which are essentially mini-programs that can perform a wide range of tasks. These macros can be triggered by events, such as opening a workbook or changing a cell’s value, or they can be run manually by the user. In the context of filtering data, a macro could be created to apply a specific filter to a range of cells whenever the workbook is opened.

Getting Started with Excel VBA

To start using VBA in Excel, you’ll first need to enable the Developer tab. This tab is not visible by default, but it can be easily enabled through the Excel Options menu. Once the Developer tab is visible, you can access the VBA editor where you can write and manage your VBA code.

Once you’re in the VBA editor, you can start writing your code. VBA code is written in procedures, which are blocks of code that perform a specific task. There are two types of procedures in VBA: Sub procedures and Function procedures. Sub procedures are used to perform actions, while Function procedures are used to return a value. For filtering data, we’ll be using a Sub procedure.

Filtering Data with Excel VBA

Now that we’ve covered the basics of VBA, let’s move on to the main topic: filtering data. The process of filtering data with VBA involves three main steps: defining the range to be filtered, setting the criteria for the filter, and applying the filter.

Defining the range to be filtered is done using the Range object. This object represents a cell or a range of cells. To define a range, you simply specify the top-left and bottom-right cells of the range, separated by a colon. For example, the range A1:B10 represents all the cells in columns A and B from rows 1 to 10.

Setting the criteria for the filter is done using the AutoFilter method. This method takes two arguments: the field to be filtered, and the criteria for the filter. The field is specified by its index number, with 1 representing the first field in the range. The criteria can be a value, a string, or an expression.

Applying the filter is the final step in the process. This is done using the ApplyFilter method. This method doesn’t take any arguments; it simply applies the filter to the range.

Example of Filtering Data with Excel VBA

Let’s look at an example of how to filter data with Excel VBA. Suppose we have a range of data in columns A and B from rows 1 to 10, and we want to filter this range to show only the rows where column A is greater than 5.

The VBA code to accomplish this would look something like this:

Sub FilterData()
    Range("A1:B10").AutoFilter Field:=1, Criteria1:=">5"
End Sub

This code defines a Sub procedure named FilterData. Inside this procedure, it defines the range A1:B10, sets the criteria for the filter to be “greater than 5” on the first field (column A), and applies the filter.


Filtering data is a common task in Excel, and VBA can make this task much easier and more efficient. By automating the process with a VBA macro, you can save time and reduce the risk of errors. This guide has provided a basic introduction to filtering data with Excel VBA, but there’s much more to learn. With practice and experimentation, you can become proficient in using VBA to enhance your data analysis capabilities in Excel.