Eliminate duplicates and alphabetize the rest within a cell

sawa0018

New Member
Joined
Dec 16, 2008
Messages
4
****** http-equiv="Content-Type" content="text/html; charset=utf-8">****** name="ProgId" content="Word.Document">****** name="Generator" content="Microsoft Word 11">****** name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5COwner%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:eek:ffice:smarttags" name="place"></o:smarttagtype><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--[if !mso]>******** classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object> <style> st1\:*{behavior:url(#ieooui) } </style> <![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> Hello good people.
<o:p> </o:p>
<o:p> </o:p>
I tried to search back through old threads and could not find the answer, so this is what I am trying to do.
<o:p> </o:p>
I would like to eliminate the duplicate items within a particular cell and alphabetize the remaining items.
<o:p> </o:p>
For example,
Currently:
South Atlantic, East South Central, South Atlantic, Pacific, Mountain, <st1:place w:st="on">New England</st1:place>, East South Central,
<o:p> </o:p>
Wanted result:
East South Central, Mountain, New England, Pacific, <st1:place w:st="on">South Atlantic</st1:place>,
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
I’d do it manually, but at current rate, it looks like it will take me about 86 hours ;)
<o:p> </o:p>
Thanks a lot.
<o:p> </o:p>
<o:p> </o:p>

Joe
 

Excel Facts

How to total the visible cells?
From the first blank cell below a filtered data set, press Alt+=. Instead of SUM, you will get SUBTOTAL(9,)
Hi Joe and Welcome to the Board!

Try this:

Main code:
Rich (BB code):

' ZVI:2009-08-31 http://www.mrexcel.com/forum/showthread.php?t=413000
' Return list of unique sorted items from comma delimited Txt list
Function GetUniqueTxt(Txt As String) As String
  Dim i&, s$, e, Arr
  Static Dic As Object
  If Dic Is Nothing Then
    ' Set slow late binding static or the global object just once
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.CompareMode = 1
  End If
  ' Copy text to array
  Arr = Split(Txt, ",")
  ' Copy to array only unique values
  With Dic
    For Each e In Arr
      s = Trim(e)
      If Len(s) > 0 Then
        If Not .Exists(s) Then
          Arr(i) = e
          i = i + 1
          .Item(s) = 0
        End If
      End If
    Next
    If i = 0 Then Exit Function
    ' Copy the resulting items to array
    ReDim Preserve Arr(0 To i - 1)
    ' Sort it
    ShellSort Arr
    .RemoveAll
  End With
  ' Convert the array values to string list
  GetUniqueTxt = Join(Arr, ", ")
End Function

' Sort of array
Private Sub ShellSort(Arr)
  Dim i&, j&, k&, m&, lb&, ub&, x
  lb = LBound(Arr)
  ub = UBound(Arr)
  k = (ub - lb + 1) \ 2
  While k > 0
    j = ub - k
    Do
      m = lb - 1
      For i = lb To j
        If Arr(i) > Arr(i + k) Then
          x = Arr(i)
          Arr(i) = Arr(i + k)
          Arr(i + k) = x
          m = i
      End If: Next
      j = m - k
    Loop While m >= lb
    k = k \ 2
  Wend
End Sub

Testing code:
Rich (BB code):

' Testing subrotine
Sub Test_GetUnique()
  Dim Txt As String
  Txt = "South Atlantic, East South Central, South Atlantic, Pacific, Mountain, New England, East South Central,"
  MsgBox Txt, , "Source: unsorted"
  MsgBox GetUnique(Txt), , "Result: unique & sorted"
End Sub

Excel Application:
Excel Workbook
AB
1TxtSouth Atlantic, East South Central, South Atlantic, Pacific, Mountain, New England, East South Central,
2GetUniqueTxt()East South Central, Mountain, New England, Pacific, South Atlantic
Sheet1


Regards,
Vladimir
 
Last edited:
Upvote 0
Vladimir's code with few tweaks,

Code:
Option Explicit
Function GetUniqueTxt(Txt As String) As String
Dim i&, s$, e, Arr
Static dic As Object
If dic Is Nothing Then
' Set slow late binding static or the global object just once
    Set dic = CreateObject("Scripting.Dictionary")
    dic.CompareMode = 1
End If
 
Arr = Split(Txt, ",")
With dic
  For Each e In Arr
    If Len(Trim(e)) > 0 Then .Item(Trim(e)) = ""
  Next
 
  Arr = .Keys
  .RemoveAll
End With
  ShellSort Arr
' Convert the array values to string list
GetUniqueTxt = Trim(Join(Arr, ", "))
End Function
 
 
' Sort of array
Private Sub ShellSort(Arr)
  Dim i&, j&, k&, m&, lb&, ub&, x
  lb = LBound(Arr)
  ub = UBound(Arr)
  k = (ub - lb + 1) \ 2
  While k > 0
    j = ub - k
    Do
      m = lb - 1
      For i = lb To j
        If Arr(i) > Arr(i + k) Then
          x = Arr(i)
          Arr(i) = Arr(i + k)
          Arr(i + k) = x
          m = i
      End If: Next
      j = m - k
    Loop While m >= lb
    k = k \ 2
  Wend
End Sub
 
Upvote 0
Thank you Sankar – nice tweaks!
Vladimir
 
Last edited:
Upvote 0
Hi

Another option. In B2:

=NoDups(A1)

Code:
Function NoDups(s As String) As String
Dim vArr As Variant, vS As Variant, k As Long
 
vArr = Split(Replace(s, " ", ""), ",")
On Error Resume Next
With New Collection
    For Each vS In vArr
        If vS <> "" Then
            If Not IsEmpty(.Item(vS)) Then
                For k = 1 To .Count
                    If vS < .Item(k) Then Exit For
                Next k
                If k > .Count Then .Add vS, vS Else .Add vS, vS, Before:=k
            End If
        End If
    Next vS
    For k = 1 To .Count
        NoDups = NoDups & ", " & .Item(k)
    Next k
    NoDups = Mid(NoDups, 3)
End With
End Function
 
Upvote 0
Hi PGC, it is cool idea to sort collection at adding time!
Typical method is in sorting of collection after it’s populated with removing-inserting of items, and it is known that removing of collection item is slow operation, but you skip it!

For the mentioned above testing string the collection is even faster than dictionary.
If doubling the testing string (Txt = Txt & Txt) than the speed is equal to both method.
The longer testing string the slower collections vs dictionary, but there could be the common sense in length of string, right?

Thanks for the idea & code,
Vladimir
 
Upvote 0
Thanks Vladimir, I knew that for big strings sorting the array in memory would make a difference in terms of execution time, but for smaller strings I thought this would be a very simple algorithm with good results.

Cheers.
 
Upvote 0
Hi again

The test whether the element already existed is wrong in my post. Although it is not necessary in terms of value, I used it to speed up the code but posted a wrong version, with an extra Not that makes it useless.

This is how it should be. I believe this makes the code substantially faster:

Code:
Function NoDups(s As String) As String
Dim vArr As Variant, vS As Variant, k As Long
 
vArr = Split(Replace(s, " ", ""), ",")
On Error Resume Next
Dim coll
Set coll = New Collection
'With New Collection
With coll
    For Each vS In vArr
        If vS <> "" Then
            If IsEmpty(.Item(vS)) Then
                For k = 1 To .Count
                    If vS < .Item(k) Then Exit For
                Next k
                If k > .Count Then .Add vS, vS Else .Add vS, vS, Before:=k
            End If
        End If
    Next vS
    For k = 1 To .Count
        NoDups = NoDups & ", " & .Item(k)
    Next k
    NoDups = Mid(NoDups, 3)
End With
End Function
 
Upvote 0
Hi PGC,
It’s slower without the type declaration shown in Bold & Red: Dim coll As Collection, but ok with such adding.
For the case here is the code of time testing subroutine:
Rich (BB code):

Sub TimeTest()
  Dim Txt As String, t As Single, i&
  
  Const N = 10000
  
  Txt = "South Atlantic, East South Central, South Atlantic, Pacific, Mountain, New England, East South Central,"
  'Txt = Txt & Txt  ' <- Uncomment this for duplicating of the  test string
  'Txt = Txt & Txt  ' <- Uncomment this for duplicating of the  test string
  
  Debug.Print String(40, "-")
  t = Timer
  For i = 1 To N
    GetUniqueTxt Txt
  Next
  t = Timer - t
  Debug.Print "Dictionary", Format(t, "0.000") & " seconds"
  
  t = Timer
  For i = 1 To N
    NoDups Txt
  Next
  t = Timer - t
  Debug.Print "Collection", Format(t, "0.000") & " seconds"
  
End Sub


One more disadvantage - your code eats the space chars between the words of each item.
So Trim instead of Replace is more suitable.

Thanks again,
Vladimir
 
Last edited:
Upvote 0
Vladimir, thank you for the observations.

It’s slower without the type declaration shown in Bold & Red: Dim coll As Collection

The final statement was the one commented.
I just added the Coll variable to inspect the collection and forgot it.

One more disadvantage - your code eats the space chars between the words of each item.
So Trim instead of Replace is more suitable.

This one was wrong. I did not consider the case where you'd had several words in each item. I followed your suggestion an changed the code.


So, in clonclusion (or until next revison) the code is:

Code:
Function NoDups(s As String) As String
Dim vArr As Variant, vS As Variant, k As Long
 
vArr = Split(s, ",")
On Error Resume Next
With New Collection
    For Each vS In vArr
        vS = Trim(vS)
        If vS <> "" Then
            If IsEmpty(.Item(vS)) Then
                For k = 1 To .Count
                    If vS < .Item(k) Then Exit For
                Next k
                If k > .Count Then .Add vS, vS Else .Add vS, vS, Before:=k
            End If
        End If
    Next vS
    For k = 1 To .Count
        NoDups = NoDups & ", " & .Item(k)
    Next k
    NoDups = Mid(NoDups, 3)
End With
End Function

As expected, removing that "Not" improved the speed.

This is the results I got with your timing code:

<table border="1" cellpadding="1" style="background:#FFF; border-collapse:collapse;border-width:2px;border-color:#CCCCCC;font-family:Arial,Arial; font-size:10pt" ><tr><th style="border-width:1px;border-color:#888888;background:#9CF " > </th><th style="border-width:1px;border-color:#888888;background:#9CF; text-align:center" >A</th><th style="border-width:1px;border-color:#888888;background:#9CF; text-align:center" >B</th><th style="border-width:1px;border-color:#888888;background:#9CF; text-align:center" >C</th><th style="border-width:1px;border-color:#888888;background:#9CF; text-align:center" >D</th><th style="border-width:1px;border-color:#888888;background:#9CF; text-align:center" width=30 >E</th></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>1</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">Dictionary</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">Collection</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">Coll/Dic</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>2</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">1 x TXT</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">0.44</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">0.3</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">68.2%</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>3</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">2 x TXT</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">0.64</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">0.41</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">64.1%</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>4</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">4 x TXT</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">1.05</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">0.61</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">58.1%</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>5</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">16 x TXT</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">3.4</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">1.85</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">54.4%</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>6</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">64 x TXT</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">13</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">6.9</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">53.1%</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>7</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:left;border-width: 1px;border-color:#888888; ">256 x TXT</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">50.9</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">26</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; ">51.1%</td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;background:#9CF; text-align:center; " ><b>8</b></td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td><td style="border-width:1px;border-color:#000000; padding-left:0.5em; padding-top:0.4em; padding-right:0.5em; padding-bottom:0.25em;text-align:right;border-width: 1px;border-color:#888888; "> </td></tr><tr><td colspan=6 style="background:#9CF; padding-left:1em" > [Book1]Sheet5</td></tr></table>


Conclusion: with this modification the relative behaviour of the solutions changed. The collection method seems now not only always better than the one with the dictionary, but also, and as the length of the string augments, the advantage is even bigger. It seems it's stabilizing around the 50%?

This is just a simple test, to draw real conclusions we'd have to make tests with different tipes of strings, with more and less duplicates, etc. It's, nevertheless, a good indication that using a collection in this problem makes sense.

Thanks again and if you want to confirm that now the collection solution is always better than the one with the dictionary it would be great, because I expected it, but not with so big a difference, almost twice as fast in some cases.
 
Upvote 0

Forum statistics

Threads
1,215,247
Messages
6,123,847
Members
449,129
Latest member
krishnamadison

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