Excel VBA Check for Anagram words

Check if Two words are Anagram

Anagrams are two or more different words with same combination of letters.

For example: now, won, own

How do we compare & verify if the two words are Anagrams or not?

We can follow different logic, as discussed in here.

VBA code to Check for Anagram

Either we can take each word from first letter and check if it is present in second word also.

Or we can arrange the second word to get first word. If we are not able to form first word then it is not anagram. Or we can arrange each letter in both words in alphabetical order.

Then verify each letter if they both are same.

Here is one simple VBA code to check whether two words are anagram or not?

Sub Check_If_Anagram()
    Dim str1 As String, str2 As String
    Dim c1 As String, c2 As String
    Dim i As Double, j As Double
    Dim chrFound As Boolean
    
    str1 = "solve"
    str2 = "loves"
    
    str1 = VBA.Trim(VBA.UCase(str1))
    str2 = VBA.Trim(VBA.UCase(str2))
    
    If VBA.Len(str1) <> VBA.Len(str2) Then
        MsgBox "Number of Letters are not same - Both words should have same length"
        Exit Sub
    End If
    
    For i = 1 To VBA.Len(str1)
        c1 = VBA.Mid(str1, i, 1)
        chrFound = False
        For j = 1 To VBA.Len(str2)
            c2 = VBA.Mid(str2, j, 1)
            If c1 = c2 Then
                chrFound = True
                Exit For
            End If
        Next j
        
        If chrFound = False Then
            MsgBox "Not Anagram - Letter " & c1 & " is missing"
            Exit For
        End If
    Next i
    If chrFound = True Then
        MsgBox str1 & " : " & str2 & " are Anagrams"
    End If
End Sub

This code actually followed the first technique. i.e., compare each word.

Remember to input words of same length. if the length does not match, then this macro will not perform anagram check.