Speed up search code

KalleK

New Member
Joined
Dec 1, 2016
Messages
18
Hello,

I got the code below. With 24000 rows it takes 42 seconds to execute. Is it possible to do it in another way to speed up?

Kalle


Rich (BB code):
Rich (BB code):
Private Sub CommandButton5_Click()
    Dim rng1 As Range
    Dim strSearch As String
    Dim V As Variant
    Dim shRow As Long
    
    NotCorrect = 0
    startTime = Timer
    
    ' Speed on
    glb_origCalculationMode = Application.Calculation
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
        .Cursor = xlWait
        .StatusBar = StatusBarMsg
        .EnableCancelKey = xlErrorHandler
    End With
    
    ' Set Range
    N = Cells(Rows.Count, "A").End(xlUp).Row
    RangeNew = "A1" & ":" & "A" & Str(N)
    RangeNew = Replace(RangeNew, " ", "")
    
    ' Search Sheet2
    Set rRng = Sheets("sheet1").Range(RangeNew)
    For Each rCell In rRng.Cells
        V = Application.Match(rCell.Value, Sheets("Sheet2").Range(RangeNew), 0)
        If IsError(V) Then
            Sheets("sheet1").Cells(rCell.Row, 1).Interior.Color = vbYellow
            NotCorrect = NotCorrect + 1
        Else
        End If
    Next rCell
    
    ' Speed off
    With Application
        .Calculation = glb_origCalculationMode
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
        .CalculateBeforeSave = True
        .Cursor = xlDefault
        .StatusBar = False
        .EnableCancelKey = xlInterrupt
    End With
    
    EndTime = Timer
    MsgBox "Total Time: " & EndTime - startTime
    MsgBox Str(NotCorrect)
End Sub
 
Akuini...

Code:
    For i = 1 To UBound(vz, 1)
        If Not d.exists(vz(i, 1)) And vz(i, 1) <> "" Then
            vc(i, 1) = "X"
            NotCorrect = NotCorrect + 1
        End If
    Next


I like how you utilized the Dictionary object. Thanks for sharing!

tonyyy


You’re welcome, tonyyy.
I'm glad this is useful for you.
 
Upvote 0

Excel Facts

Do you hate GETPIVOTDATA?
Prevent GETPIVOTDATA. Select inside a PivotTable. In the Analyze tab of the ribbon, open the dropown next to Options and turn it off
Thanks again! I tried it and iteration to find the row number takes a long time if you got a very large number of rows. I tested with match and that also takes a lot of time. I column is fine, buut more it takes up to 5 minutes to execute ...
 
Upvote 0
Thanks again! I tried it and iteration to find the row number takes a long time if you got a very large number of rows. I tested with match and that also takes a lot of time. I column is fine, buut more it takes up to 5 minutes to execute ...


Well, looks like checking column 2 to 20 needs a lot of time.
How many rows do you have in each sheet (sheet1 & sheet2)?
Can you sort sheet1 & sheet2 by col A ascending? If yes, maybe I can modified the macro to run faster.
 
Upvote 0
Another question:
As you’ve explained, it is possible value in col A sheet1 has no match with value in col A sheet2.
But is it also possible value in col A sheet2 has no match with value in col A sheet1?
 
Upvote 0
Another question:
As you’ve explained, it is possible value in col A sheet1 has no match with value in col A sheet2.
But is it also possible value in col A sheet2 has no match with value in col A sheet1?

- Yes, there could be values in Col A in Sheet 2 that does not have a match in Col A Sheet1

Well, looks like checking column 2 to 20 needs a lot of time.
How many rows do you have in each sheet (sheet1 & sheet2)?
Can you sort sheet1 & sheet2 by col A ascending? If yes, maybe I can modified the macro to run faster.

- Around 25000. Yes, the sheet could be sorted from row 3 and down (A header on the first rows)

BR Kalle
 
Upvote 0
I assumed the data in is a normal range not in a table object, starting at row 3.
Try this:
Code:
[COLOR=blue]Sub[/COLOR] a1015771d[B]()[/B]
[I][COLOR=seagreen]'sheet1 must be the activesheet[/COLOR][/I]
[COLOR=blue]Dim[/COLOR] n [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR][B],[/B] m [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR][B],[/B] i [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR][B],[/B] k [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR]
[COLOR=blue]Dim[/COLOR] pa[B],[/B] qa[B],[/B] za[B],[/B] zx
[COLOR=blue]Dim[/COLOR] NotCorrect [COLOR=blue]As[/COLOR] [COLOR=blue]Long[/COLOR]
  
Application.ScreenUpdating [B]=[/B] [COLOR=blue]False[/COLOR]
   
    NotCorrect [B]=[/B] [B][COLOR=crimson]0[/COLOR][/B]
    startTime [B]=[/B] Timer
   
    n [B]=[/B] Cells[B]([/B]Rows.count[B],[/B] [COLOR=brown]"A"[/COLOR][B]).[/B][COLOR=blue]End[/COLOR][B]([/B]xlUp[B]).[/B]row
    pa [B]=[/B] Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])).[/B]Value
    [COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
        m [B]=[/B] [B].[/B]Cells[B]([/B]Rows.count[B],[/B] [COLOR=brown]"A"[/COLOR][B]).[/B][COLOR=blue]End[/COLOR][B]([/B]xlUp[B]).[/B]row
        qa [B]=[/B] [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])).[/B]Value
    [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
      
       [I][COLOR=seagreen]'sorting the range by col A in both sheets[/COLOR][/I]
       Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Sort key1[B]:=[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
       [COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
           [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=.[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
       [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
     
       [COLOR=blue]ReDim[/COLOR] za[B]([/B][B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
       [COLOR=blue]ReDim[/COLOR] zb[B]([/B][B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]qa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
 
    [COLOR=blue]Set[/COLOR] d1 [B]=[/B] CreateObject[B]([/B][COLOR=brown]"scripting.dictionary"[/COLOR][B])[/B]
        [COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] x [COLOR=blue]In[/COLOR] pa
            d1[B]([/B]x[B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
                [COLOR=blue]Next[/COLOR]
   
    [COLOR=blue]Set[/COLOR] d2 [B]=[/B] CreateObject[B]([/B][COLOR=brown]"scripting.dictionary"[/COLOR][B])[/B]
        [COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] x [COLOR=blue]In[/COLOR] qa
            d2[B]([/B]x[B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
                [COLOR=blue]Next[/COLOR]
   
    [COLOR=blue]Set[/COLOR] d3 [B]=[/B] CreateObject[B]([/B][COLOR=brown]"scripting.dictionary"[/COLOR][B])[/B]
        [COLOR=blue]For[/COLOR] [COLOR=blue]Each[/COLOR] x [COLOR=blue]In[/COLOR] d1
            [COLOR=blue]If[/COLOR] d2.Exists[B]([/B]x[B])[/B] [COLOR=blue]Then[/COLOR]
                d3[B]([/B]x[B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
                    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]
                        [COLOR=blue]Next[/COLOR]
 
    [COLOR=blue]If[/COLOR] d3.Exists[B]([/B][COLOR=brown]""[/COLOR][B])[/B] [COLOR=blue]Then[/COLOR] d3.Remove [COLOR=brown]""[/COLOR]
 
        [COLOR=blue]For[/COLOR] i [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
            [COLOR=blue]If[/COLOR] d3.Exists[B]([/B]pa[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]))[/B] [COLOR=blue]Then[/COLOR] za[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
                [COLOR=blue]Next[/COLOR]
 
        [COLOR=blue]For[/COLOR] i [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]qa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
            [COLOR=blue]If[/COLOR] d3.Exists[B]([/B]qa[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]))[/B] [COLOR=blue]Then[/COLOR] zb[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B]
                [COLOR=blue]Next[/COLOR]
 
     [I][COLOR=seagreen]'put the result in helper column Z[/COLOR][/I]
    Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]za[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] za
       Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=[/B]Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
          ra [B]=[/B] Range[B]([/B][COLOR=brown]"Z:Z"[/COLOR][B]).[/B]Find[B]([/B][COLOR=brown]"*"[/COLOR][B],[/B] SearchOrder[B]:=[/B]xlByRows[B],[/B] SearchDirection[B]:=[/B]xlPrevious[B]).[/B]row
             Range[B]([/B]Cells[B]([/B]ra [B]+[/B] [B][COLOR=crimson]1[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])).[/B]Interior.Color [B]=[/B] vbYellow
                pa [B]=[/B] Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]ra[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Value
  
  
    [COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
         [B].[/B]Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]zb[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] zb
            [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=.[/B]Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
               rb [B]=[/B] [B].[/B]Range[B]([/B][COLOR=brown]"Z:Z"[/COLOR][B]).[/B]Find[B]([/B][COLOR=brown]"*"[/COLOR][B],[/B] SearchOrder[B]:=[/B]xlByRows[B],[/B] SearchDirection[B]:=[/B]xlPrevious[B]).[/B]row
                  qa [B]=[/B] [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]rb[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Value
    [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
 
  
   [COLOR=blue]ReDim[/COLOR] zx[B]([/B][B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
  
   [COLOR=blue]For[/COLOR] i [B]=[/B] [B][COLOR=crimson]1[/COLOR][/B] [COLOR=blue]To[/COLOR] UBound[B]([/B]pa[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
        [COLOR=blue]For[/COLOR] k [B]=[/B] [B][COLOR=crimson]2[/COLOR][/B] [COLOR=blue]To[/COLOR] [B][COLOR=crimson]20[/COLOR][/B]
            [COLOR=blue]If[/COLOR] pa[B]([/B]i[B],[/B] k[B])[/B] [B]<>[/B] qa[B]([/B]i[B],[/B] k[B])[/B] [COLOR=blue]Then[/COLOR]
                zx[B]([/B]i[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] [COLOR=brown]"G"[/COLOR]
                [COLOR=blue]Exit[/COLOR] [COLOR=blue]For[/COLOR]
            [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR]
        [COLOR=blue]Next[/COLOR]
   [COLOR=blue]Next[/COLOR]
    
    Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]zx[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B] [B]=[/B] zx
      
    [COLOR=blue]With[/COLOR] Range[B]([/B][COLOR=brown]"Z3"[/COLOR][B]).[/B]Resize[B]([/B]UBound[B]([/B]zx[B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B][COLOR=crimson]1[/COLOR][/B][B])[/B]
        Application.ReplaceFormat.Interior.Color [B]=[/B] vbGreen
           [B].[/B]Replace What[B]:=[/B][COLOR=brown]"G"[/COLOR][B],[/B] Replacement[B]:=[/B][COLOR=brown]""[/COLOR][B],[/B] lookat[B]:=[/B]xlWhole[B],[/B] _
                 searchFormat[B]:=[/B][COLOR=blue]False[/COLOR][B],[/B] ReplaceFormat[B]:=[/B][COLOR=blue]True[/COLOR]
        [B].[/B]Copy
    [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
   
    Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]).[/B]PasteSpecial paste[B]:=[/B]xlPasteFormats
    Columns[B]([/B][COLOR=brown]"Z"[/COLOR][B]).[/B]Delete
 
       Range[B]([/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] Cells[B]([/B]n[B],[/B] [B][COLOR=crimson]20[/COLOR][/B][B])).[/B]Sort key1[B]:=[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
       [COLOR=blue]With[/COLOR] Sheets[B]([/B][COLOR=brown]"sheet2"[/COLOR][B])[/B]
           [B].[/B]Range[B](.[/B]Cells[B]([/B][B][COLOR=crimson]3[/COLOR][/B][B],[/B] [B][COLOR=crimson]1[/COLOR][/B][B]),[/B] [B].[/B]Cells[B]([/B]m[B],[/B] [B][COLOR=crimson]26[/COLOR][/B][B])).[/B]Sort key1[B]:=.[/B]Range[B]([/B][COLOR=brown]"A3"[/COLOR][B]),[/B] order1[B]:=[/B]xlAscending[B],[/B] Header[B]:=[/B]xlNo
       [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]

Application.ScreenUpdating [B]=[/B] [COLOR=blue]True[/COLOR]
 
    EndTime [B]=[/B] Timer
    MsgBox [COLOR=brown]"Total Time: "[/COLOR] [B]&[/B] EndTime [B]-[/B] startTime [B]&[/B] vbLf [B]&[/B] _
    [COLOR=brown]"NotCorrect: "[/COLOR] [B]&[/B] str[B]([/B]NotCorrect[B])[/B]
   
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]
 
Upvote 0
Can you help me to change the code like this? This is my goal.
Then why did you not ask this question originally?


1. Sheet1 and Sheet2 contains 20 columns
2. If the contents of column A in sheet1 if found in Column A in sheet2 but any of the other columns for that row does not match, write gren at column A in sheet1. If it is not found as you have done, write column A in sheet 1 yellow.
I assume that the values within any single column on Sheet2 are unique (if not, your requirements need to be tightened up). I also assume that the search is to be done on a column by column basis. In other words, Column B values on Sheet1 are to be searched for in Column B on Sheet2 before looking at the rest of the row, then the same for Columns C and Columns D, etc. And, of course, there is the assumption that I actually understood your requirements correctly (you will have to check the results from my code to see if I did or not). If those assumptions are correct, then give this macro a try...
Code:
[table="width: 500"]
[tr]
	[td]Sub CertifiedBilingualEnglish()
  Dim R As Long, C As Long, LastRow As Long, CellCount As Long
  Dim FoundCell As Range, WS1 As Worksheet, WS2 As Worksheet
  Set WS1 = Sheets("Sheet1")
  Set WS2 = Sheets("Sheet2")
  LastRow = WS1.Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  WS1.Cells.Interior.Color = xlNone
  For C = 1 To 20
    For R = 1 To LastRow
      Set FoundCell = WS2.Columns(C).Find(WS1.Cells(R, C).Value, , xlValues, xlWhole, , , False, , False)
      If Not FoundCell Is Nothing Then
        CellCount = Application.CountIf(WS2.Rows(FoundCell.Row), FoundCell.Value)
        If CellCount = 1 Then
          WS1.Cells(R, C).Interior.Color = vbGreen
        Else
          WS1.Cells(R, C).Interior.Color = vbYellow
        End If
      End If
    Next
  Next
  Application.ScreenUpdating = True
End Sub[/td]
[/tr]
[/table]
 
Last edited:
Upvote 0
Hello Akuini and Mark,

Sorry for the late response! With the code from Akuini (not the latest, it is not working ?) and with with help of the match function to find the row wwhich corresponds to a match in the first column it takes 4-5 minutes. It is okay to wait so long, but it is quite a long time.

This it what the code should do:
1. The values in Col A in Sheet 1 is unique. The values in Col A in sheet is unique.
2. Loop col A in sheet1 and see if the values are find in Col A in sheet2, if a value is not find mark the row yellow in sheet A (Col A). If the value exist in Col A in sheet 2, compare the rest of the columns and if there are a mismatch mark the Col A in Sheet 1 green (for that row).
3. There could be different number of rows in the sheets. There could be different number of columns in sheet1 and 2.

If you have time and want to improve Akulin's code.

Kalle


Example:

Sheet 1
Col A
a
bb (This should be yellow, not found in Col A for sheet2))
c (This should be green, found but a mismatch in Col B)
d

Col B
aa
bb
ccc
dd

Sheet2
Col A
a
b
c
d
e

Col B
aa
bb
cc
dd
ee
 
Upvote 0
Not sure why you said my last code in post #16 didn’t work.
I used your example above & here is the result:

sheet1:


Book1
AB
1
2
3aaa
4bbbb
5cccc
6ddd
Sheet1



sheet2:



Book1
AB
1
2
3aaa
4bbb
5ccc
6ddd
7eee
Sheet2
 
Upvote 0

Forum statistics

Threads
1,223,911
Messages
6,175,329
Members
452,635
Latest member
laura12345

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