Need Help Deleting Empty Columns Based on Condition in Excel Spreadsheet by VBA code

Status
Not open for further replies.

Guna13

Board Regular
Joined
Nov 22, 2019
Messages
70
Office Version
  1. 365
Platform
  1. Windows
Hi All,

I need assistance on how to efficiently delete blank and empty columns based on a condition in the second row, starting from "F" column to the last column. I have updated the entire project code information in columns F1 to the last column, totaling more than 150+ columns. In the second row, if a project is used, it will have a corresponding number proportion like 1 or 0.50, 0.30, etc., but the sum of these values should not exceed 1 (100%).

Can someone please guide me on how to find and delete the empty columns that do not meet this condition? this below code is running. but just taking time. ( because this is repeated process for more than 6000+ Employee. so my performance is down.

Thank you for your help.


VBA Code:
Sub DeleteEmptyProjectColumns_New()
    Dim ws As Worksheet
    Dim rng As Range
    Dim col As Range
    Dim lastColumn As Long

    Set ws = ThisWorkbook.Sheets("WS")
    lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    Set rng = ws.Range(ws.Cells(1, 6), ws.Cells(1, lastColumn))

    For i = lastColumn To 6 Step -1
        If ws.Cells(2, i).Value = "" Or Not IsNumeric(ws.Cells(2, i).Value) Then
            ws.Columns(i).Delete
        End If
    Next i
End Sub

Emample screen shot.
1690875537954.png
 

Excel Facts

VLOOKUP to Left?
Use =VLOOKUP(A2,CHOOSE({1,2},$Z$1:$Z$99,$Y$1:$Y$99),2,False) to lookup Y values to left of Z values.
In the second row, if a project is used, it will have a corresponding number proportion like 1 or 0.50, 0.30, etc.
So, in your image every column F:S would get deleted since nothing in row 2 - is that correct?

Does column A allow us to determine the last row of data in the worksheet?
 
Upvote 0
So, in your image every column F:S would get deleted since nothing in row 2 - is that correct?

Does column A allow us to determine the last row of data in the worksheet?
Dear Peters SS.

I apologize for the confusion in my previous Screen shot. Here is the actual screenshot. The sheet name is called WS. I need to check from column "F" to the last dynamic column, and wherever there is a number less than 1 in the second row (e.g., 0.05, 0.095, or 1.00), I will keep those columns. The rest of the entire columns should be deleted in a faster way. (From column "F" to the till last column ***).

1690888766513.png
 
Upvote 0
Try this with a copy of your workbook.

VBA Code:
Sub Delete_Unwanted_Columns()
  Dim ws As Worksheet
  Dim a As Variant, b As Variant
  Dim nr As Long, lc As Long, i As Long, k As Long
  
  Set ws = ThisWorkbook.Sheets("WS")
  With ws
    nr = .Range("A" & Rows.Count).End(xlUp).Row + 1
    lc = .Cells(1, Columns.Count).End(xlToLeft).Column
    a = .Range("F2", .Cells(2, lc)).Value
    ReDim b(1 To 1, 1 To UBound(a, 2))
    For i = 1 To UBound(a, 2)
      If Len(a(1, i)) = 0 Or Not IsNumeric(a(1, i)) Then
        b(1, i) = 1
        k = k + 1
      End If
    Next i
    If k > 0 Then
      Application.ScreenUpdating = False
      With .Range("F1").Resize(nr, lc - 5)
        .Rows(nr).Value = b
        .Sort Key1:=.Rows(nr), Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight
        .Resize(, k).EntireColumn.Delete
      End With
      Application.ScreenUpdating = True
    End If
  End With
End Sub
 
Upvote 1
Try this with a copy of your workbook.

VBA Code:
Sub Delete_Unwanted_Columns()
  Dim ws As Worksheet
  Dim a As Variant, b As Variant
  Dim nr As Long, lc As Long, i As Long, k As Long
 
  Set ws = ThisWorkbook.Sheets("WS")
  With ws
    nr = .Range("A" & Rows.Count).End(xlUp).Row + 1
    lc = .Cells(1, Columns.Count).End(xlToLeft).Column
    a = .Range("F2", .Cells(2, lc)).Value
    ReDim b(1 To 1, 1 To UBound(a, 2))
    For i = 1 To UBound(a, 2)
      If Len(a(1, i)) = 0 Or Not IsNumeric(a(1, i)) Then
        b(1, i) = 1
        k = k + 1
      End If
    Next i
    If k > 0 Then
      Application.ScreenUpdating = False
      With .Range("F1").Resize(nr, lc - 5)
        .Rows(nr).Value = b
        .Sort Key1:=.Rows(nr), Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight
        .Resize(, k).EntireColumn.Delete
      End With
      Application.ScreenUpdating = True
    End If
  End With
End Sub
I am thrilled to see how well the previous code performed, deleting around 100+ columns within a blink of an eye! Your assistance and support have been simply wonderful, and more thankful Sir.

I am, however, facing a significant bottleneck that could use your expert advice. When dealing with large datasets, particularly those exceeding 7500+ lines, the process is painfully slow, often taking up to 2 hours.

I am working across three sheets - WS, JV, and Allocation. The WS sheet houses the booking info which is updated in the JV Sheet. Moreover, I am also pulling in Dimension information from the Dimension sheet based on the Project info in the WS Sheet (starting at "F" column, for either single or multiple projects). All these steps have been translated into a code but it's slow and less efficient, using standard copy and paste methods.

Do you have any suggestions on how I could restructure this? Could arrays or the UBound function potentially be the solution? Any guidance on how to optimize this further would be greatly appreciated. Thank you for your time and consideration.


1690892292778.png
1690892361159.png
1690892316775.png

VBA Code:
Sub CopyToJVSheet1()
    Dim wsLastRow As Long
    Dim wsLastCol As Long
    Dim jvLastRow As Long
    Dim ws As Worksheet
    Dim jvSheet As Worksheet
    Dim dataRange As Range
    Dim dim1Values As Variant
    Dim dim2Values As Variant
    Dim dim3Values As Variant
    Dim dim4Values As Variant
    Dim Dim1V As Variant
    Dim ledgerAccount As String
    Dim b1Value As String
    Dim Amt() As Variant, Lg() As Variant, DC() As Variant, CC() As Variant
    Dim amounts As Variant
    Dim firstDigit As Long
    Dim fs As Range
    Dim AM As Range

   
    Set ws = ThisWorkbook.Sheets("WS")
    Set jvSheet = ThisWorkbook.Sheets("JV")
    Set dimSheet = ThisWorkbook.Sheets("Dimension Summary")
    Set dimSummary = ThisWorkbook.Sheets("Dimension Summary")
   
    wsLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    wsLastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
   
    If wsLastCol = 6 Then
        searchValue = ws.Range("F1").Value
        Set foundCell = dimSheet.Range("B:B").Find(what:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)
       
        Dim dimValues() As Variant
        dimValues = foundCell.Offset(0, 1).Resize(1, 4).Value
       
        jvLastRow = jvSheet.Cells(jvSheet.Rows.Count, "I").End(xlUp).Row
        Dim startRow As Long: startRow = jvLastRow + 1
       
        ' Copying data in one shot to avoid loops
        jvSheet.Range("I" & startRow).Resize(wsLastRow - 1, 1).Value = ws.Range("E2:E" & wsLastRow).Value
        jvSheet.Range("H" & startRow).Resize(wsLastRow - 1, 1).Value = ws.Range("F2:F" & wsLastRow).Value
        jvSheet.Range("A" & startRow).Resize(wsLastRow - 1, 1).Value = ws.Range("D2:D" & wsLastRow).Value
        jvSheet.Range("J" & startRow).Resize(wsLastRow - 1, 1).Value = EmpID
       
        jvSheet.Range("D" & startRow).Resize(wsLastRow - 1, 1).Value = ws.Range("B1").Value
       
    For Each cell In jvSheet.Range("A" & jvLastRow + 1 & ":A" & jvSheet.Cells(jvSheet.Rows.Count, "I").End(xlUp).Row)
        firstDigit = Val(Left(cell.Value, 1))
        If firstDigit > 2 Then
            cell.Offset(0, 1).Formula = dimValues(1, 1) ' Apply the formula when first digit > 2
                cell.Offset(0, 2).Formula = dimValues(1, 2)
                cell.Offset(0, 4).Formula = dimValues(1, 3)
                cell.Offset(0, 5).Formula = dimValues(1, 4)
                cell.Offset(0, 9).Formula = EmpID
               
        Else
              cell.Offset(0, 1).Value = "" ' Leave the cell blank when first digit <= 2
            cell.Offset(0, 4).Formula = dimValues(1, 3)
            cell.Offset(0, 5).Formula = dimValues(1, 4)
            cell.Offset(0, 9).Formula = EmpID
            End If
    Next cell

Else
   
    jvLastRow = Sheets("JV").Cells(Rows.Count, 1).End(xlUp).Row
   
    b1Value = Sheets("WS").Cells(1, "B").Value
   
    For i = 2 To wsLastRow
           
        ledgerAccount = Sheets("WS").Cells(i, "D").Value
        Dim4V = dimSheet.Range("D2").Value
        Dim5V = dimSheet.Range("E2").Value
       
        If Left(ledgerAccount, 1) = "1" Or Left(ledgerAccount, 1) = "2" Then
            Sheets("JV").Cells(jvLastRow + 1, "D").Value = b1Value
            Sheets("JV").Cells(jvLastRow + 1, "A").Value = ledgerAccount
            Sheets("JV").Cells(jvLastRow + 1, "E").Value = Dim4V
            Sheets("JV").Cells(jvLastRow + 1, "F").Value = Dim5V
            Sheets("JV").Cells(jvLastRow + 1, "D").Value = b1Value
            Sheets("JV").Cells(jvLastRow + 1, "H").Value = Sheets("WS").Cells(i, "B").Value
            Sheets("JV").Cells(jvLastRow + 1, "I").Value = ws.Cells(i, "E").Value
            Sheets("JV").Cells(jvLastRow + 1, "J").Value = EmpID
           
            jvLastRow = jvLastRow + 1
        Else
           
            amounts = Sheets("WS").Range(Sheets("WS").Cells(i, "F"), Sheets("WS").Cells(i, wsLastCol)).Value
            Sheets("JV").Range("H" & jvLastRow + 1).Resize(UBound(amounts, 2)).Value = Application.Transpose(amounts)
            Proct = ws.Range(ws.Cells(1, "F"), ws.Cells(1, ws.Cells(1, Columns.Count).End(xlToLeft).Column)).Value


' Update values in column B based on VLOOKUP from "Dim Summary" sheet
Set dimSummary = ThisWorkbook.Sheets("Dimension Summary") ' Change "Dim Summary" to your actual worksheet name

For j = 1 To UBound(Proct, 2)
    Dim lookupValue As Variant
    lookupValue = Proct(1, j)
   
    Dim resultValue As Variant
   
    resultValue = Application.VLookup(lookupValue, dimSummary.Range("B:C"), 2, False)
    resultValue1 = Application.VLookup(lookupValue, dimSummary.Range("B:D"), 3, False)
    resultValue2 = Application.VLookup(lookupValue, dimSummary.Range("B:E"), 4, False)
    resultValue3 = Application.VLookup(lookupValue, dimSummary.Range("B:F"), 5, False)
   
    If Not IsError(resultValue) Then
        ThisWorkbook.Sheets("JV").Cells(jvLastRow + j, "B").Value = resultValue
        ThisWorkbook.Sheets("JV").Cells(jvLastRow + j, "C").Value = resultValue1
        ThisWorkbook.Sheets("JV").Cells(jvLastRow + j, "E").Value = resultValue2
        ThisWorkbook.Sheets("JV").Cells(jvLastRow + j, "F").Value = resultValue3
        ThisWorkbook.Sheets("JV").Cells(jvLastRow + j, "J").Value = EmpID
       
    Else
        ThisWorkbook.Sheets("JV").Cells(jvLastRow + j, "B").Value = "Not Found"
    End If
Next j
                   
            For j = 0 To UBound(amounts, 2)
                Sheets("JV").Cells(jvLastRow + j + 1, "A").Value = ledgerAccount
                Sheets("JV").Cells(jvLastRow + j + 1, "D").Value = b1Value
                Sheets("JV").Cells(jvLastRow + j + 1, "I").Value = ws.Cells(i, "E").Value
                Sheets("JV").Cells(jvLastRow + j + 1, "J").Value = EmpID
               
            Next j
            jvLastRow = jvLastRow + UBound(amounts, 2)
        End If
    Next i
End If
End Sub
 
Last edited by a moderator:
Upvote 0
Glad the previous code worked well for you. Thanks for letting us know. (y)

When posting vba code in the forum don't forget to use the available code tags. I have added the tags for you this time. 😊

Could we have some small but representative sample data with XL2BB for each of the relevant sheets so we can copy for testing if required, & explain in relation to that sample data what the code is doing or needs to do?
 
Upvote 1
Glad the previous code worked well for you. Thanks for letting us know. (y)

When posting vba code in the forum don't forget to use the available code tags. I have added the tags for you this time. 😊

Could we have some small but representative sample data with XL2BB for each of the relevant sheets so we can copy for testing if required, & explain in relation to that sample data what the code is doing or needs to do?
Hi Peter, as per your advice. i have installed tha xl2bb Add-Ins and take the mini-sheet clipboard and save it here. if i am wrong, kindly guide me. totally three sheet is there.
First Sheet name is called WS
Only community Purpose.xlsm
ABCDEFG
1Cost Center1001TypeDRDr/CrAVT001BAT016
2BASIC SALARY1500E450100DR750.00750.00
3NIGHT SHIFT ALLOWANCE(12 HR)120E450101DR60.0060.00
4MORNING SHIFT ALLOWANCE36E450101DR18.0018.00
5HRD LEVY110450313DR5.505.50
6EMPLOYER EIS2.5E450313DR1.251.25
7EMPLOYER EPF1670450312DR83.5083.50
8EMPLOYER SOCSO21.850450313DR10.9310.93
9MID MONTH PAYMENT DEDUCTION1500D217000CR1,500.001,500.00
10ABSENT120D450100CR60.0060.00
11UNPAID LEAVES36D450100CR18.0018.00
12HRD LEVY110220002CR11.0011.00
13EMPLOYER EIS2.5D220005CR2.502.50
14EMPLOYEE EIS167D220005CR167.00167.00
15EMPLOYER EPF21.850220003CR21.8521.85
WS
Cells with Conditional Formatting
CellConditionCell FormatStop If True
G1Cell ValueduplicatestextNO
G1Cell ValueduplicatestextNO


Second sheet name is called Dimension Summary
Only community Purpose.xlsm
ABCDEF
1Baan CodeDimension CodeDimension1Dimension2Dimension4Dimension5
227671203sdfsfsdfdsfsdfsdf
327671207sdfsfsdfdsf999999sdf
427999999sdfsfsfsafdadsf
527AVT001sdfsfasfddsfaasf
627BAT016dsfasfdMCSPENasfd
727CHN217sfdsafsadfasfd
827CHN852sdfsfsafMCSPENsadf
927CHN868sdfsfsafasfsafd
1027CNE001sfdasdfdasfd
1127CR5370dsfssafMCSPENasf
1227CR5377fdsdasfdsafdsafd
1327CR5379fdsasfdasfdsafd
1427CR5384fdssafdsdfasf
1527CR5385fdsfsafdsafdsafd
1627CR5386sdfsfsdfdsfsdfsdf
1727CR5388sdfsfsdfdsf999999sdf
1827CR6377sdfsfsfsafdadsf
1927CR6378sdfsfasfddsfaasf
2027CR6380dsfasfdMCSPENasfd
2127CR6381sfdsafsadfasfd
2227CR6383sdfsfsafMCSPENsadf
2327CR6384sdfsfsafasfsafd
2427CR6386sfdasdfdasfd
2527CR6388dsfssafMCSPENasf
2627CR6391fdsdasfdsafdsafd
2727CR6407fdsasfdasfdsafd
2827CR6619fdssafdsdfasf
2927CR6710fdsfsafdsafdsafd
3027CR6720sdfsfsdfdsfsdfsdf
3127CR6723sdfsfsdfdsf999999sdf
3227CR6802sdfsfsfsafdadsf
3327CR6807sdfsfasfddsfaasf
3427CR6822dsfasfdMCSPENasfd
3527CR6908sfdsafsadfasfd
3627CR6909sdfsfsafMCSPENsadf
3727CR8311sdfsfsafasfsafd
3827CR8502sfdasdfdasfd
3927CR9302dsfssafMCSPENasf
4027CR9303fdsdasfdsafdsafd
4127CR9868fdsasfdasfdsafd
4227CR9905fdssafdsdfasf
4327CR9914fdsfsafdsafdsafd
4427CR9920sdfsfsdfdsfsdfsdf
4527CR9922sdfsfsdfdsf999999sdf
4627CR9937sdfsfsfsafdadsf
4727CR9948sdfsfasfddsfaasf
4827CR9954dsfasfdMCSPENasfd
4927CR9964sfdsafsadfasfd
5027CR9971sdfsfsafMCSPENsadf
5127CR9983sdfsfsafasfsafd
5227CR9987sfdasdfdasfd
5327CR9994dsfssafMCSPENasf
5427CR9996fdsdasfdsafdsafd
5527CR9998fdsasfdasfdsafd
5627CS5306fdssafdsdfasf
5727CS9933fdsfsafdsafdsafd
5827DSN335dsfssafMCSPENasf
5927DYG001fdsdasfdsafdsafd
6027ERB003fdsasfdasfdsafd
6127FMS864fdssafdsdfasf
6227FSA157fdsfsafdsafdsafd
6327FSA707sdfsfsdfdsfsdfsdf
6427FSA828sdfsfsdfdsf999999sdf
6527FTP717sdfsfsfsafdadsf
6627HK6386sdfsfasfddsfaasf
6727HK6392dsfasfdMCSPENasfd
6827HK7150sfdsafsadfasfd
6927HK7272sdfsfsafMCSPENsadf
7027HK8150sdfsfsafasfsafd
7127HK9948sfdasdfdasfd
7227HK9949dsfssafMCSPENasf
7327HNW001fdsdasfdsafdsafd
7427ITL001fdsasfdasfdsafd
7527JNT001GunaGunaGunaGuna
7627KAL012fdsfsafdsafdsafd
7727MRV001MRV001I62501999999999999
7827NEX063CRPUSE999999MCSPENNEX063
7927PNG027CRPUSE999999MCSPENPNG027
8027PNG062CRPUSE999999MCSPENPNG062
8127PNG089CRPUSE999999MCSPENPNG089
8227PNG091CRPUSE999999MCSPENPNG091
8327PNG440sdfsfsdfdsfsdfsdf
8427PSO001sdfsfsdfdsf999999sdf
8527PUN762sdfsfsfsafdadsf
8627SHA168sdfsfasfddsfaasf
8727SKU773dsfasfdMCSPENasfd
8827SNG886sfdsafsadfasfd
8927TDN002sdfsfsafMCSPENsadf
9027TEK001sdfsfsafasfsafd
9127WUZ898sfdasdfdasfd
9227XRT001dsfssafMCSPENasf
9327XRT002fdsdasfdsafdsafd
9427XRT003fdsasfdasfdsafd
9562DEXCOMfdssafdsdfasf
9689273501fdsfsafdsafdsafd
9789TDN001fdsfsafdsafdsafd
9891MIS001fdsfsafdsafdsafd
9927TDN001fdsfsafdsafdsafd
Dimension Summary
Cells with Conditional Formatting
CellConditionCell FormatStop If True
B99Cell ValueduplicatestextNO
B99Cell ValueduplicatestextNO
B99Cell ValueduplicatestextNO
B1:B98,B100:B1048576Cell ValueduplicatestextNO
B95:B98,B100:B1048576Cell ValueduplicatestextNO
B1:B98Cell ValueduplicatestextNO



Thired Sheet Name is called - JV
Only community Purpose.xlsm
ABCDEFGHIJ
1Ledger accountDim 1Dim 2Dim 3Dim 4Dim 5CurrencyTransaction AmountDr/CrEmp_ID
2450100sdfsfasfd1001dsfaasf750DR
3450100dsfasfd1001MCSPENasfd750DR
4450101sdfsfasfd1001dsfaasf60DR
5450101dsfasfd1001MCSPENasfd60DR
6450101sdfsfasfd1001dsfaasf18DR
7450101dsfasfd1001MCSPENasfd18DR
8450313sdfsfasfd1001dsfaasf5.5DR
9450313dsfasfd1001MCSPENasfd5.5DR
10450313sdfsfasfd1001dsfaasf1.25DR
11450313dsfasfd1001MCSPENasfd1.25DR
12450312sdfsfasfd1001dsfaasf83.5DR
13450312dsfasfd1001MCSPENasfd83.5DR
14450313sdfsfasfd1001dsfaasf10.925DR
15450313dsfasfd1001MCSPENasfd10.925DR
162170001001sdfdsfsdf1500CR
17450100sdfsfasfd1001dsfaasf60CR
18450100dsfasfd1001MCSPENasfd60CR
19450100sdfsfasfd1001dsfaasf18CR
20450100dsfasfd1001MCSPENasfd18CR
212200021001sdfdsfsdf11CR
222200051001sdfdsfsdf2.5CR
232200051001sdfdsfsdf167CR
242200031001sdfdsfsdf21.85CR
JV
 
Upvote 0
Thanks for the XL2BB sample data. (y)

However, what about this?
& explain in relation to that sample data what the code is doing or needs to do?
Since I am not familiar with your data, vba code or requirements I am not sure I can help unless I can clearly understand what the code does or needs to do.
 
Upvote 0
Thanks for the XL2BB sample data. (y)

However, what about this?

Since I am not familiar with your data, vba code or requirements I am not sure I can help unless I can clearly understand what the code does or needs to do.
I kindly request your help and support to optimize the code for better performance in my spreadsheet. This specific part of the code is concerning three sheets: WS, JV, and Allocation.

On the WS sheet, the booking information is available, with the Salary Info in column B extending to the last row, the Ledger account information in column D, and the Dr/CR information from column E to the last column. The Employee Engaged Project names and their respective percentages are used to calculate the amounts based on the Salary column (please note that my previous code handles this part, so no need to address it here).

In the dimension Summary sheet, we have maintained the Projected codes related to Dim1, Dim3, Dim4, and Dim5. The unique code for Dim3 is referred from cell B2 in the WS Sheet.

In the JV sheet, I need to update the WS salary information in the appropriate columns for booking purposes, along with the respective Project details obtained from the Dimension Summary sheet.

Currently, my code is running slowly, and I'm unsure how to write a faster code using arrays or Ubound functions for this task.

The condition is that on the WS sheet, I only have six columns to directly transpose the amounts to the JV sheet. If an employee is engaged in multiple projects for more than 1 Like more than 6 column in WS Sheet, I will consider all the project details.

I believe this information is sufficient for you to assist me in optimizing the code. Thank you for your valuable support.
 
Upvote 0
I kindly request your help and support to optimize the code for better performance in my spreadsheet. This specific part of the code is concerning three sheets: WS, JV, and Allocation.

On the WS sheet, the booking information is available, with the Salary Info in column B extending to the last row, the Ledger account information in column D, and the Dr/CR information from column E to the last column. The Employee Engaged Project names and their respective percentages are used to calculate the amounts based on the Salary column (please note that my previous code handles this part, so no need to address it here).

In the dimension Summary sheet, we have maintained the Projected codes related to Dim1, Dim3, Dim4, and Dim5. The unique code for Dim3 is referred from cell B2 in the WS Sheet.

In the JV sheet, I need to update the WS salary information in the appropriate columns for booking purposes, along with the respective Project details obtained from the Dimension Summary sheet.

Currently, my code is running slowly, and I'm unsure how to write a faster code using arrays or Ubound functions for this task.

The condition is that on the WS sheet, I only have six columns to directly transpose the amounts to the JV sheet. If an employee is engaged in multiple projects for more than 1 Like more than 6 column in WS Sheet, I will consider all the project details.

I believe this information is sufficient for you to assist me in optimizing the code. Thank you for your valuable support.
Thanks for the XL2BB sample data. (y)

However, what about this?

Since I am not familiar with your data, vba code or requirements I am not sure I can help unless I can clearly understand what the code does or needs to do.

@Peter_SSs, if my explanation is not clear or not able to understand. please let me know​

 
Upvote 0
Status
Not open for further replies.

Forum statistics

Threads
1,215,073
Messages
6,122,974
Members
449,095
Latest member
Mr Hughes

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