How to Filter for Text with VBA Macros in Excel

Bottom line: Learn how to apply text filters with VBA.  Includes examples for filtering for multiple items, begins with, contains, wildcards, etc.

Skill level: Intermediate

VBA AutoFilter Automate Text Filters

Download the File

The Excel file that contains the code can be downloaded below.  This file contains code for filtering different data types and filter types.  Please see my article on The Ultimate Guide to AutoFilters in VBA for more details.

VBA AutoFilters Guide.xlsm (100.5 KB)

Text Filters in Excel

When filtering a column that contains text, we can pick items from the filter drop-down menu list.

VBA AutoFilter Multiple Criteria from Filter Drop-down Menu Listbox

We can also use the Text Filters sub menu to create a custom filter.  This gives us options for filter criteria that equals, does not equal, begins with, ends with, contains, or does not contain specific text.  We can also use wildcard characters for these filters.

The following macro contains examples for different types of text filters.   It's important to note that the Criteria parameter values are wrapped in quotation marks.  The comparison operators are also included inside the quotes.  Please see my post on The Ultimate Guide to Filters in VBA for more details on how to use the AutoFilter method and its parameters.

VBA Code Samples for Text Filters

The code in the box below can be copy/pasted into the VB Editor.

Sub AutoFilter_Text_Examples()
'Examples for filtering columns with TEXT

Dim lo As ListObject
Dim iCol As Long

  'Set reference to the first Table on the sheet
  Set lo = Sheet1.ListObjects(1)

  'Set filter field
  iCol = lo.ListColumns("Product").Index
  'Clear Filters
  'All lines starting with .AutoFilter are a continuation
  'of the with statement.
  With lo.Range
    'Single Item
    .AutoFilter Field:=iCol, Criteria1:="Product 2"
    '2 Criteria using Operator:=xlOr
    .AutoFilter Field:=iCol, _
                Criteria1:="Product 3", _
                Operator:=xlOr, _
                Criteria2:="Product 4"
    'More than 2 Criteria (list of items in an Array function)
    .AutoFilter Field:=iCol, _
                Criteria1:=Array("Product 4", "Product 5", "Product 6"), _
    'Begins With - use asterisk as wildcard character at end of string
    .AutoFilter Field:=iCol, Criteria1:="Product*"
    'Ends With - use asterisk as wildcard character at beginning
    'of string
    .AutoFilter Field:=iCol, Criteria1:="*2"
    'Contains - wrap search text in asterisks
    .AutoFilter Field:=iCol, Criteria1:="*uct*"
    'Does not contain text
    'Start with Not operator <> and wrap search text in asterisks
    .AutoFilter Field:=iCol, Criteria1:="<>*8*"
    'Contains a wildcard character * or ?
    'Use a tilde ~ before the character to search for values with
    .AutoFilter Field:=iCol, Criteria1:="Product 1~*"
  End With

End Sub

Filters & Data Types

The filter drop-down menu options change based on what type of data is in the column.   We have different filters for text, numbers, dates, and colors.  This creates A LOT of different combinations of Operators and Criteria for each type of filter.

I created separate posts for each of these filter types.  The posts contain explanations and VBA code examples.

The file in the downloads section above contains all of these code samples in one place.  You can add it to your Personal Macro Workbook and use the macros in your projects.

Please leave a comment below with any questions or suggestions.  Thanks! 🙂

Please share
Jon Acampora

Welcome to Excel Campus! I am excited you are here. My name is Jon and my goal is to help you learn Excel to save time with your job and advance in your career. I've been an avid Excel user and VBA developer for 10+ years. I am also a Microsoft MVP. I try to learn something new everyday, and want to share this knowledge with you to help you improve your skills. When I'm not looking at spreadsheets, I get outdoors and surf. :) more about me

Click Here to Leave a Comment Below 1 comments
sandeep - November 1, 2018

Very useful codes.


Leave a Reply: