Count The Number of Character or Phrase Occurences Within A String With VBA

vba count number of times a character appears in a string

What This VBA Code Does

Whether you are wanting to know how many times a double 'S' appears in the word "Mississippi" or how many 1's are in a given string of binary numbers, the below code will be able to get you to that answer very easily.

The logic behind the test is to use the Replace function to get rid of every occurrence within your target text (essentially doing a find & replace with a blank). Next, the formula takes the difference between the original and newly modified text.  It also divides by the number of characters in your countTxt variable to account for words more than one character in length. If that didn't make any sense to you don't worry, just know that it works :)

Sub CountOccurrences()
'PURPOSE: Count the number of occurrences of a specific value inside a string of text
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault

Dim countTxt As String
Dim myTxt As String
Dim DollarCount As Long

'What do you want to count?
  countTxt = "$"

'What do you want to analyze?
  myTxt = "Sheet1!$A$1"

'Count how many occurrences there are
  DollarCount = (Len(myTxt) - Len(Replace(myTxt, countTxt, ""))) / Len(countTxt)
  
'Report out results
  If DollarCount <> 1 Then
    MsgBox "There are " & DollarCount & " dollar signs in your text"
  Else
    MsgBox "There is " & DollarCount & " dollar sign in your text"
  End If
  
End Sub

How Do I Modify This To Fit My Specific Needs?

Chances are this post did not give you the exact answer you were looking for. We all have different situations and it's impossible to account for every particular need one might have. That's why I want to share with you: My Guide to Getting the Solution to your Problems FAST! In this article, I explain the best strategies I have come up with over the years to getting quick answers to complex problems in Excel, PowerPoint, VBA, you name it

I highly recommend that you check this guide out before asking me or anyone else in the comments section to solve your specific problem. I can guarantee 9 times out of 10, one of my strategies will get you the answer(s) you are needing faster than it will take me to get back to you with a possible solution. I try my best to help everyone out, but sometimes I don't have time to fit everyone's questions in (there never seem to be quite enough hours in the day!).

I wish you the best of luck and I hope this tutorial gets you heading in the right direction!

Chris "Macro" Newman :)