Fuzzy matching in Excel

Miasha

New Member
Joined
Oct 26, 2010
Messages
15
I have over a thousand rows of records where I not only am trying to find duplicates, but also records that are very similiar. I know that I can use the 'Conditional Formatting' - 'Duplicate Values' option to highlight 'duplicates.' But I also want to highlight records that maybe matches 80% or 90% of the time based on one particular column [ID] (i.e. fuzzy matching?)
For example, using the duplicates option - the following would be highlighted:
Name Address ID
Mary Rogers 123 Main Street 3485
David Smith 3845 1st Street 9012
Mary Rogers 123 Main Street 3485
Jane Williams 90123 Wilberry Blvd. 4657
Mary Rogers 123 Main Street 38568

However, Mary Rogers is listed again, but with a different ID: 38568. How can I identify this type record since it is still part of the identification for Mary Rogers?
Thanks for any ideas.
 

Excel Facts

Last used cell?
Press Ctrl+End to move to what Excel thinks is the last used cell.
You might want to have the name in a separate column... that would be a lot of work though.
 
Upvote 0
Hi,

so the name is in column A, address is in Column B & ID is in column C, yes?

Could you not match on just name, or address?
 
Upvote 0
Yes - ID is in a separate column. This is the column that I need to focus on since it is the one most likely different when name address matches. I am basically trying to 'compare' records to see how closely they match. For example:

Mary Smith 123 Main St. 1034
Mary Smith 123 Main St. 4758
Mary Smith 123 Main St. 1034

'Comparing' these records, I need a formula/function that would give me this result:

Name/Address/ID/Record Match
Mary Smith /123 Main St. /1034 /100%
Mary Smith /123 Main St./ 4758 /90% (because the ID is different)
Mary Smith /123 Main St. /1034 /100%

Hope this makes sense!
 
Upvote 0
Hi,

Try this macro, which assumes the data starts at row 2 and is in Sheet1:
Code:
Option Explicit
Dim mobjDictionary As Object

Sub GetMatches()
Dim iPtr As Integer
Dim lRow As Long, lRowEnd As Long, lItem As Long
Dim saKey() As String, sKey As String
Dim saKeyCombos() As String
Dim sngPercent As Single
Dim vCur As Variant
Dim WS As Worksheet

Set mobjDictionary = Nothing
Set mobjDictionary = CreateObject("Scripting.Dictionary")

ReDim saKey(1 To 3)
Set WS = Sheets("Sheet1")
lRowEnd = WS.Cells(Rows.Count, "A").End(xlUp).Row
For lRow = 2 To lRowEnd
    vCur = WS.Range("A" & lRow & ":C" & lRow).Value
    For iPtr = 1 To 3
        saKey(iPtr) = NormaliseKey(CStr(vCur(1, iPtr)))
    Next iPtr
    
    saKeyCombos = GetKeyCombos(saKey)
    For iPtr = 1 To UBound(saKeyCombos)
        On Error Resume Next
        mobjDictionary.Add Key:=saKeyCombos(iPtr), Item:=lRow
        On Error GoTo 0
    Next iPtr
Next lRow

For lRow = 2 To lRowEnd
    vCur = WS.Range("A" & lRow & ":C" & lRow).Value
    For iPtr = 1 To 3
        saKey(iPtr) = NormaliseKey(CStr(vCur(1, iPtr)))
    Next iPtr
    
    saKeyCombos = GetKeyCombos(saKey)
    
    sngPercent = 0
    If mobjDictionary.Item(saKeyCombos(1)) <> lRow Then
        sngPercent = 1
    Else
        For iPtr = 2 To UBound(saKeyCombos)
            lItem = mobjDictionary.Item(saKeyCombos(iPtr))
            If lItem <> lRow Then
                sngPercent = 0.66
                Exit For
            End If
        Next iPtr
    End If
    If sngPercent <> 0 Then WS.Range("D" & lRow).Value = sngPercent
Next lRow

End Sub

Private Function NormaliseKey(ByVal String1 As String) As String
Dim iPtr As Integer
Dim sChar As String

NormaliseKey = ""
For iPtr = 1 To Len(String1)
    sChar = UCase$(Mid$(String1, iPtr, 1))
    If sChar <> LCase$(sChar) _
    Or IsNumeric(sChar) Then NormaliseKey = NormaliseKey & sChar
Next iPtr
End Function

Private Function GetKeyCombos(ByRef Keys() As String) As String()
Dim saCombos() As String

ReDim saCombos(1 To 4)
saCombos(1) = Keys(1) & "|" & Keys(2) & "|" & Keys(3)
saCombos(2) = Keys(1) & "||" & Keys(3)
saCombos(3) = Keys(1) & "|" & Keys(2) & "|"
saCombos(4) = "|" & Keys(2) & "|" & Keys(3)

GetKeyCombos = saCombos
End Function

This gives these results:
<b>Excel 2003</b><table cellpadding="2.5px" rules="all" style=";background-color: #FFFFFF;border: 1px solid;border-collapse: collapse; border-color: #A6AAB6"><colgroup><col width="25px" style="background-color: #E0E0F0" /><col /><col /><col /><col /></colgroup><thead><tr style=" background-color: #E0E0F0;text-align: center;color: #161120"><th></th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr ><td style="color: #161120;text-align: center;">1</td><td style="font-weight: bold;;">Name</td><td style="font-weight: bold;;">Address</td><td style="font-weight: bold;;">ID</td><td style="font-weight: bold;text-align: center;;">% Match</td></tr><tr ><td style="color: #161120;text-align: center;">2</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style="text-align: right;;">3485</td><td style="text-align: center;;"></td></tr><tr ><td style="color: #161120;text-align: center;">3</td><td style=";">David Smith</td><td style=";">3845 1st Street</td><td style="text-align: right;;">9012</td><td style="text-align: center;;"></td></tr><tr ><td style="color: #161120;text-align: center;">4</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style="text-align: right;;">3485</td><td style="text-align: center;;">100%</td></tr><tr ><td style="color: #161120;text-align: center;">5</td><td style=";">Jane Williams</td><td style=";">90123 Wilberry Blvd</td><td style="text-align: right;;">4657</td><td style="text-align: center;;"></td></tr><tr ><td style="color: #161120;text-align: center;">6</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style="text-align: right;;">38568</td><td style="text-align: center;;">66%</td></tr></tbody></table><p style="width:3.6em;font-weight:bold;margin:0;padding:0.2em 0.6em 0.2em 0.5em;border: 1px solid #A6AAB6;border-top:none;text-align: center;background-color: #E0E0F0;color: #161120">Sheet1</p><br /><br />
 
Upvote 0
For completeness, maybe this modified macro:
Code:
Option Explicit
Dim mobjDictionary As Object

Sub GetMatches()
Dim iPtr As Integer
Dim lRow As Long, lRowEnd As Long, lItem As Long
Dim saKey() As String, sKey As String
Dim saKeyCombos() As String
Dim sngPercent As Single
Dim vCur As Variant, vData As Variant
Dim WS As Worksheet

Set mobjDictionary = Nothing
Set mobjDictionary = CreateObject("Scripting.Dictionary")

ReDim saKey(1 To 3)
Set WS = Sheets("Sheet1")
lRowEnd = WS.Cells(Rows.Count, "A").End(xlUp).Row
For lRow = 2 To lRowEnd
    vCur = WS.Range("A" & lRow & ":C" & lRow).Value
    For iPtr = 1 To 3
        saKey(iPtr) = NormaliseKey(CStr(vCur(1, iPtr)))
    Next iPtr
    
    saKeyCombos = GetKeyCombos(saKey)
    For iPtr = 1 To UBound(saKeyCombos)
        On Error Resume Next
        mobjDictionary.Add Key:=saKeyCombos(iPtr), Item:=lRow
        On Error GoTo 0
    Next iPtr
    
    For iPtr = 1 To UBound(saKey)
        sKey = Left$("|||", iPtr - 1) & saKey(iPtr) & Left$("|||", 3 - iPtr)
        On Error Resume Next
        mobjDictionary.Add Key:=sKey, Item:=lRow
        On Error GoTo 0
    Next iPtr

Next lRow

ReDim vData(1 To 1, 1 To 2)
For lRow = 2 To lRowEnd
    vCur = WS.Range("A" & lRow & ":C" & lRow).Value
    For iPtr = 1 To 3
        saKey(iPtr) = NormaliseKey(CStr(vCur(1, iPtr)))
    Next iPtr
    
    saKeyCombos = GetKeyCombos(saKey)
    
    sngPercent = 0
    lItem = 0
    lItem = mobjDictionary.Item(saKeyCombos(1))
    If lItem <> lRow Then
        sngPercent = 1
    Else
        For iPtr = 2 To UBound(saKeyCombos)
            lItem = mobjDictionary.Item(saKeyCombos(iPtr))
            If lItem <> lRow Then
                sngPercent = 0.66
                Exit For
            End If
        Next iPtr
        If sngPercent = 0 Then
            For iPtr = 1 To UBound(saKey)
                sKey = Left$("|||", iPtr - 1) & saKey(iPtr) & Left$("|||", 3 - iPtr)
                lItem = mobjDictionary.Item(sKey)
                If lItem <> lRow Then
                    sngPercent = 0.33
                    Exit For
                End If
            Next iPtr
        End If
    End If
    If sngPercent <> 0 Then
        vData(1, 1) = sngPercent
        vData(1, 2) = lItem
        WS.Range("D" & lRow, "E" & lRow).Value = vData
    End If
Next lRow

mobjDictionary.RemoveAll
Set mobjDictionary = Nothing
End Sub

Private Function NormaliseKey(ByVal String1 As String) As String
Dim iPtr As Integer
Dim sChar As String

NormaliseKey = ""
For iPtr = 1 To Len(String1)
    sChar = UCase$(Mid$(String1, iPtr, 1))
    If sChar <> LCase$(sChar) _
    Or IsNumeric(sChar) Then NormaliseKey = NormaliseKey & sChar
Next iPtr
End Function

Private Function GetKeyCombos(ByRef Keys() As String) As String()
Dim saCombos() As String

ReDim saCombos(1 To 4)
saCombos(1) = Keys(1) & "|" & Keys(2) & "|" & Keys(3)
saCombos(2) = Keys(1) & "||" & Keys(3)
saCombos(3) = Keys(1) & "|" & Keys(2) & "|"
saCombos(4) = "|" & Keys(2) & "|" & Keys(3)

GetKeyCombos = saCombos
End Function

Which gives these results, note that column E us populated to indicate the source.
<b>Excel 2003</b><table cellpadding="2.5px" rules="all" style=";background-color: #FFFFFF;border: 1px solid;border-collapse: collapse; border-color: #A6AAB6"><colgroup><col width="25px" style="background-color: #E0E0F0" /><col /><col /><col /><col /><col /></colgroup><thead><tr style=" background-color: #E0E0F0;text-align: center;color: #161120"><th></th><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th></tr></thead><tbody><tr ><td style="color: #161120;text-align: center;">1</td><td style="font-weight: bold;;">Name</td><td style="font-weight: bold;;">Address</td><td style="font-weight: bold;;">ID</td><td style="font-weight: bold;text-align: center;;">% Match</td><td style="font-weight: bold;text-align: center;;">Match row</td></tr><tr ><td style="color: #161120;text-align: center;">2</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style="text-align: right;;">3485</td><td style="text-align: center;;"></td><td style="text-align: center;;"></td></tr><tr ><td style="color: #161120;text-align: center;">3</td><td style=";">David Smith</td><td style=";">3845 1st Street</td><td style="text-align: right;;">9012</td><td style="text-align: center;;"></td><td style="text-align: center;;"></td></tr><tr ><td style="color: #161120;text-align: center;">4</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style="text-align: right;;">3485</td><td style="text-align: center;;">100%</td><td style="text-align: center;;">2</td></tr><tr ><td style="color: #161120;text-align: center;">5</td><td style=";">Jane Williams</td><td style=";">90123 Wilberry Blvd</td><td style="text-align: right;;">4657</td><td style="text-align: center;;"></td><td style="text-align: center;;"></td></tr><tr ><td style="color: #161120;text-align: center;">6</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style="text-align: right;;">38568</td><td style="text-align: center;;">66%</td><td style="text-align: center;;">2</td></tr><tr ><td style="color: #161120;text-align: center;">7</td><td style=";">Mary Rogers</td><td style=";">xyz</td><td style="text-align: right;;">543</td><td style="text-align: center;;">33%</td><td style="text-align: center;;">2</td></tr><tr ><td style="color: #161120;text-align: center;">8</td><td style=";">qwerty</td><td style=";">3845 1st Street</td><td style="text-align: right;;">1234</td><td style="text-align: center;;">33%</td><td style="text-align: center;;">3</td></tr><tr ><td style="color: #161120;text-align: center;">9</td><td style=";">uiop</td><td style=";">zxcv</td><td style="text-align: right;;">9012</td><td style="text-align: center;;">33%</td><td style="text-align: center;;">3</td></tr></tbody></table><p style="width:3.6em;font-weight:bold;margin:0;padding:0.2em 0.6em 0.2em 0.5em;border: 1px solid #A6AAB6;border-top:none;text-align: center;background-color: #E0E0F0;color: #161120">Sheet1</p><br /><br />
 
Upvote 0
Thanks - this looks good. I'd like to try this process on another worksheet as well. However, it has 15 columns (where the ID column is column 14) as opposed to the 3 column shown in the previous example. Which line item in the script should I modify to account for this?
 
Upvote 0
Hi,

For 15 columns or so we need a different approach.
The following code will use the ID (column 15) as a key, but also an alternative key of the name (Column 1) if no match found.
Check out the constant declarations at the top of the code and amend as appropriate
Code:
Option Explicit
Const miDataColumns As Integer = 15         'No of data columns
Const miKeycolumn As Integer = 14           'ID key column
Const miAltKeyColumn As Integer = 1         'Alternative key column
Const miPercentcolumn As Integer = 16       'Column required to put % result
Const miMatchRowColumn As Integer = 17      'Column required for Match Row result

Const msWorksheet As String = "Sheet1"

Dim mobjMainDictionary As Object
Dim mobjAltDictionary As Object

Sub GetMatches()
Dim iPtr As Integer, iScore As Integer
Dim lRow As Long, lRowEnd As Long
Dim sCurKey As String, sCurAltKey As String, sMatchKey As String
Dim vData As Variant, vItem As Variant, vCurItem As Variant
Dim WS As Worksheet

Set WS = Sheets(msWorksheet)
lRowEnd = WS.Cells(Rows.Count, miKeycolumn).End(xlUp).Row

Set mobjMainDictionary = Nothing
Set mobjMainDictionary = CreateObject("Scripting.Dictionary")

Set mobjAltDictionary = Nothing
Set mobjAltDictionary = CreateObject("Scripting.Dictionary")

For lRow = 2 To lRowEnd
    vData = WS.Range("A" & lRow, WS.Cells(lRow, miDataColumns).Address).Value
    sCurKey = NormaliseKey(CStr(vData(1, miKeycolumn)))
    sCurAltKey = NormaliseKey(CStr(vData(1, miAltKeyColumn)))
    
    If sCurKey <> "" Or sCurAltKey <> "" Then
        vCurItem = WorksheetFunction.Transpose(vData)
        ReDim Preserve vCurItem(1 To miDataColumns, 1 To 2)
        vCurItem(1, 2) = lRow
        If sCurKey = "" Then
                On Error Resume Next
                sCurKey = mobjAltDictionary.Item(sCurAltKey)
                On Error GoTo 0
        End If
        If sCurKey <> "" Then
            If mobjMainDictionary.exists(sCurKey) = False Then
                If mobjAltDictionary.exists(sCurAltKey) Then
                    sCurKey = mobjAltDictionary.Item(sCurAltKey)
                Else
                    mobjMainDictionary.Add key:=sCurKey, Item:=vCurItem
                End If
            End If
            
            vItem = mobjMainDictionary.Item(sCurKey)
            If vItem(1, 2) <> lRow Then
                iScore = 0
                For iPtr = 1 To UBound(vItem, 1)
                    If vItem(iPtr, 1) = vCurItem(iPtr, 1) Then iScore = iScore + 1
                Next iPtr
                WS.Cells(lRow, miPercentcolumn).Value = Format(iScore / UBound(vItem, 1), "0.00%")
                If miMatchRowColumn > 0 Then WS.Cells(lRow, miMatchRowColumn).Value = vItem(1, 2)
    
            End If
        End If
        
        If sCurAltKey <> "" Then
            If mobjAltDictionary.exists(sCurAltKey) = False Then mobjAltDictionary.Add key:=sCurAltKey, Item:=sCurKey
        End If
        
    End If
Next lRow

mobjMainDictionary.RemoveAll
Set mobjMainDictionary = Nothing
mobjAltDictionary.RemoveAll
Set mobjAltDictionary = Nothing

End Sub

Private Function NormaliseKey(ByVal String1 As String) As String
Dim iPtr As Integer
Dim sChar As String

NormaliseKey = ""
For iPtr = 1 To Len(String1)
    sChar = UCase$(Mid$(String1, iPtr, 1))
    If sChar <> LCase$(sChar) Or IsNumeric(sChar) Then NormaliseKey = NormaliseKey & sChar
Next iPtr
End Function
 
Upvote 0
Continued ...

Sample output:
<b>Excel 2003</b><table cellpadding="2.5px" rules="all" style=";background-color: #FFFFFF;border: 1px solid;border-collapse: collapse; border-color: #A6AAB6"><colgroup><col width="25px" style="background-color: #E0E0F0" /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /><col /></colgroup><thead><tr style=" background-color: #E0E0F0;text-align: center;color: #161120"><th></th><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th><th>F</th><th>G</th><th>H</th><th>I</th><th>J</th><th>K</th><th>L</th><th>M</th><th>N</th><th>O</th><th>P</th><th>Q</th></tr></thead><tbody><tr ><td style="color: #161120;text-align: center;">1</td><td style="font-weight: bold;;">Name</td><td style="font-weight: bold;;">Address</td><td style="font-weight: bold;;">Data3</td><td style="font-weight: bold;;">Data4</td><td style="font-weight: bold;;">Data5</td><td style="font-weight: bold;;">Data6</td><td style="font-weight: bold;;">Data7</td><td style="font-weight: bold;;">Data8</td><td style="font-weight: bold;;">Data9</td><td style="font-weight: bold;;">Data10</td><td style="font-weight: bold;;">Data11</td><td style="font-weight: bold;;">Data12</td><td style="font-weight: bold;;">Data13</td><td style="font-weight: bold;;">ID</td><td style="font-weight: bold;;">Data15</td><td style="font-weight: bold;;">% Match</td><td style="font-weight: bold;;">Match Row</td></tr><tr ><td style="color: #161120;text-align: center;">2</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style=";">Data3 2</td><td style=";">Data4 2</td><td style=";">Data5 2</td><td style=";">Data6 2</td><td style=";">Data7 2</td><td style=";">Data8 2</td><td style=";">Data9 2</td><td style=";">Data10 2</td><td style=";">Data11 2</td><td style=";">Data12 2</td><td style=";">Data13 2</td><td style="text-align: right;;">3485</td><td style=";">Data15 2</td><td style="text-align: right;;"></td><td style="text-align: right;;"></td></tr><tr ><td style="color: #161120;text-align: center;">3</td><td style=";">David Smith</td><td style=";">3845 1st Street</td><td style=";">Data3 3</td><td style=";">Data4 3</td><td style=";">Data5 3</td><td style=";">Data6 3</td><td style=";">Data7 3</td><td style=";">Data8 3</td><td style=";">Data9 3</td><td style=";">Data10 3</td><td style=";">Data11 3</td><td style=";">Data12 3</td><td style=";">Data13 3</td><td style="text-align: right;;">9012</td><td style=";">Data15 3</td><td style="text-align: right;;"></td><td style="text-align: right;;"></td></tr><tr ><td style="color: #161120;text-align: center;">4</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style=";">Data3 4</td><td style=";">Data4 4</td><td style=";">Data5 4</td><td style=";">Data6 4</td><td style=";">Data7 4</td><td style=";">Data8 4</td><td style=";">Data9 4</td><td style=";">Data10 4</td><td style=";">Data11 4</td><td style=";">Data12 4</td><td style=";">Data13 4</td><td style="text-align: right;;">3485</td><td style=";">Data15 4</td><td style="text-align: right;;">20.00%</td><td style="text-align: right;;">2</td></tr><tr ><td style="color: #161120;text-align: center;">5</td><td style=";">Jane Williams</td><td style=";">90123 Wilberry Blvd</td><td style=";">Data3 5</td><td style=";">Data4 5</td><td style=";">Data5 5</td><td style=";">Data6 5</td><td style=";">Data7 5</td><td style=";">Data8 5</td><td style=";">Data9 5</td><td style=";">Data10 5</td><td style=";">Data11 5</td><td style=";">Data12 5</td><td style=";">Data13 5</td><td style="text-align: right;;">4657</td><td style=";">Data15 5</td><td style="text-align: right;;"></td><td style="text-align: right;;"></td></tr><tr ><td style="color: #161120;text-align: center;">6</td><td style=";">Mary Rogers</td><td style=";">123 Main Street</td><td style=";">Data3 6</td><td style=";">Data4 6</td><td style=";">Data5 6</td><td style=";">Data6 6</td><td style=";">Data7 6</td><td style=";">Data8 6</td><td style=";">Data9 6</td><td style=";">Data10 6</td><td style=";">Data11 6</td><td style=";">Data12 6</td><td style=";">Data13 6</td><td style="text-align: right;;">38568</td><td style=";">Data15 6</td><td style="text-align: right;;">13.33%</td><td style="text-align: right;;">2</td></tr><tr ><td style="color: #161120;text-align: center;">7</td><td style=";">Mary Rogers</td><td style=";">xyz</td><td style=";">Data3 7</td><td style=";">Data4 7</td><td style=";">Data5 7</td><td style=";">Data6 7</td><td style=";">Data7 7</td><td style=";">Data8 7</td><td style=";">Data9 7</td><td style=";">Data10 7</td><td style=";">Data11 7</td><td style=";">Data12 7</td><td style=";">Data13 7</td><td style="text-align: right;;">543</td><td style=";">Data15 7</td><td style="text-align: right;;">6.67%</td><td style="text-align: right;;">2</td></tr><tr ><td style="color: #161120;text-align: center;">8</td><td style=";">qwerty</td><td style=";">3845 1st Street</td><td style=";">Data3 8</td><td style=";">Data4 8</td><td style=";">Data5 8</td><td style=";">Data6 8</td><td style=";">Data7 8</td><td style=";">Data8 8</td><td style=";">Data9 8</td><td style=";">Data10 8</td><td style=";">Data11 8</td><td style=";">Data12 8</td><td style=";">Data13 8</td><td style="text-align: right;;">1234</td><td style=";">Data15 8</td><td style="text-align: right;;"></td><td style="text-align: right;;"></td></tr><tr ><td style="color: #161120;text-align: center;">9</td><td style=";">uiop</td><td style=";">zxcv</td><td style=";">Data3 9</td><td style=";">Data4 9</td><td style=";">Data5 9</td><td style=";">Data6 9</td><td style=";">Data7 9</td><td style=";">Data8 9</td><td style=";">Data9 9</td><td style=";">Data10 9</td><td style=";">Data11 9</td><td style=";">Data12 9</td><td style=";">Data13 9</td><td style="text-align: right;;">9012</td><td style=";">Data15 9</td><td style="text-align: right;;">6.67%</td><td style="text-align: right;;">3</td></tr></tbody></table><p style="width:3.6em;font-weight:bold;margin:0;padding:0.2em 0.6em 0.2em 0.5em;border: 1px solid #A6AAB6;border-top:none;text-align: center;background-color: #E0E0F0;color: #161120">Sheet1</p><br /><br />
 
Upvote 0

Forum statistics

Threads
1,224,503
Messages
6,179,134
Members
452,890
Latest member
Nikhil Ramesh

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top