Copy range from string until reach another string

lmcquade91

New Member
Joined
Sep 29, 2024
Messages
18
Office Version
  1. 365
Platform
  1. Windows
Hi guys!

I am fairly new to coding and have been playing around, so am self taught.

I am having some trouble with the below.

I have a CSV file containing 14 days of roster data. I want to copy each day's data onto a new sheet.

I was thinking of using cells.find to look for the string "loc" as that separates each days data, but am not sure how to copy FROM that string UNTIL reaching next one.

if anyone can give me some code or help me out it would be greatly appreciated!! Thank you guys! :)
 
At some stage when putting some sample data together I misread AMGR for AMOR. :)

I used your data and it worked fine even creating the 'Role Colours' worksheet.

Do you have any more jobs for me?
I am at work and have tested it for the upcoming roster with different dates and there are no hiccups at all :) I have printed off your code and am intently studying it with a highlighter on my dinner break!

The absolute last steps to finalise this amazing project are that I want to add some rows, columns and strings to each sheet (all exactly the same) with the attached format.

Add 5 Columns to the right
Add 5 Rows Above
A1:L1 Merge Cell, C2:I2 Merge Cell, C3:I3 Merge Cell, C4:I4 Merge Cell, C5:I5 Merge Cell, J5:L5 Merge Cell
In A1 Insert Date to match Sheet Name
In B2 insert String 'Bookings'
In A3 insert String 'Breakfast'
In A4 insert String 'Lunch'
In A5 insert String 'Dinner'
In C2 insert String 'Functions/events'
In J5 insert String 'Breaks'
Grey out Row 6
Format Black lines to close off table
Sort the staff by time but staying within their role

The last one is probably too hard so if you can't, don't worry and I can just manually do it for each sheet.

Have a wonderful evening!

Lara x
 

Attachments

  • DutySheetsFinalSteps.JPG
    DutySheetsFinalSteps.JPG
    116.2 KB · Views: 4
  • Sortby Time.JPG
    Sortby Time.JPG
    127.7 KB · Views: 3
Upvote 0

Excel Facts

Pivot Table Drill Down
Double-click any number in a pivot table to create a new report showing all detail rows that make up that number
I am at work and have tested it for the upcoming roster with different dates and there are no hiccups at all :) I have printed off your code and am intently studying it with a highlighter on my dinner break!

The absolute last steps to finalise this amazing project are that I want to add some rows, columns and strings to each sheet (all exactly the same) with the attached format.

Add 5 Columns to the right
Add 5 Rows Above
A1:L1 Merge Cell, C2:I2 Merge Cell, C3:I3 Merge Cell, C4:I4 Merge Cell, C5:I5 Merge Cell, J5:L5 Merge Cell
In A1 Insert Date to match Sheet Name
In B2 insert String 'Bookings'
In A3 insert String 'Breakfast'
In A4 insert String 'Lunch'
In A5 insert String 'Dinner'
In C2 insert String 'Functions/events'
In J5 insert String 'Breaks'
Grey out Row 6
Format Black lines to close off table
Sort the staff by time but staying within their role

The last one is probably too hard so if you can't, don't worry and I can just manually do it for each sheet.

Have a wonderful evening!

Lara x
Hi Lara

Formatting worksheets often takes a while. It is like formatting any document to get it looking right.

This is the next version. I should have used version numbers.

Lets call this Version 5.

Is this going to be printed out?

If so, then will there ever be more rows than would fit on a page?

Because I have auto fitted the columns they are often different widths because the length of names, for examples varies.

I'm working on some code to make them all a uniform width across all sheets. The sheets will look much better then.

Turning Grid Lines off makes it look better.

VBA Code:
Option Explicit

Public Sub subImportAndSplitData()
Dim i As Integer
Dim WsData As Worksheet
Dim arrData() As Variant
Dim arrDate() As String
Dim rngLoc As Range
  
  ActiveWorkbook.Save
  
  Call subCreateRoleColoursTab
    
  Set WsData = Worksheets("Structured")
  
  WsData.Columns("D").Replace What:="SUP", Replacement:="ASUP", SearchOrder:=xlByRows, LookAt:=xlWhole, MatchCase:=True
    
  arrData = WsData.UsedRange
  
  For i = LBound(arrData) To UBound(arrData)
    
    If arrData(i, 1) = "Loc" Then
    
      Set rngLoc = WsData.Range("A" & i)
      
      With rngLoc
      
        arrDate = Split(.Offset(-4, 0).Value, " ")
    
        Call subCreateWorksheets(rngLoc, arrDate(1) & " " & arrDate(2))
            
      End With
            
    End If
    
  Next i
  
  MsgBox "Data has been processed and separate sheets been created.", vbOKOnly, "Confirmation"

End Sub

Private Sub subCreateWorksheets(rng As Range, strWorksheetName As String)
Dim Ws As Worksheet
             
  Set Ws = fncCreateSheet(ActiveWorkbook, strWorksheetName)
         
  With rng.CurrentRegion
    Ws.Range("A1").Formula2 = "=CHOOSECOLS(VSTACK(TAKE('" & .Parent.Name & "'!" & .Address & ",1),SORT(" & _
    "'" & .Parent.Name & "'!" & .Offset(1, 0).Resize(.Rows.Count - 1.7).Address & ",{4,2,3})),6,5,7,4,2,3,1)"
  End With
  
  With Ws.Range("A1").CurrentRegion
    .Value = .Value
    .Columns("E:F").NumberFormat = "HH:MM"
  End With
  
  Call subSplitByRole(Ws)
  
  Call subAddHeaderBlock(Ws)
  
End Sub

Private Sub subFormatSheet(Ws As Worksheet)

  With Ws.Range("A1").CurrentRegion
    
    With .Borders
      .LineStyle = xlContinuous
      .Weight = xlThin
      .ColorIndex = vbBlack
    End With
    
    .RowHeight = 27
    .Rows(1).Font.Bold = True
    .VerticalAlignment = xlCenter
    .IndentLevel = 1
    .EntireColumn.AutoFit
  
  End With
  
End Sub

Public Sub subSplitByRole(Ws As Worksheet)
Dim arrData() As Variant
Dim i As Integer
Dim strRole As String
Dim lngColour As Long
Dim rngColour As Range

  Ws.Activate
  
  Call subFormatSheet(Ws)
  
  arrData = Ws.Range("A1").CurrentRegion

  strRole = arrData(UBound(arrData), 4)
    
  For i = UBound(arrData) To 1 Step -1
  
    If arrData(i, 4) <> strRole Then
      Ws.Range("A" & i + 1).EntireRow.Insert
      With Ws.Range("A" & i + 1)
        With .Resize(1, 7)
          .Interior.Color = fncGetColour(strRole)
          .Merge
          With .Borders
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = vbBlack
          End With
        End With
        .Value = strRole
        .Font.Bold = True
      End With
      strRole = arrData(i, 4)
    End If
  
  Next i

End Sub

Public Function fncGetColour(strRole As String) As Long
Dim rngColour As Range

  fncGetColour = 16777215

  Set rngColour = Worksheets("Role Colours").Range("A:A").Find(strRole, LookIn:=xlValues, LookAt:=xlWhole)
      
  If Not rngColour Is Nothing Then
  
    fncGetColour = rngColour.Interior.Color
          
  End If

End Function

Public Sub subCreateRoleColoursTab()
Dim Ws As Worksheet
Dim rng As Range

  If Not fncDoesWorksheetExist(ThisWorkbook, "Role Colours") Then

    Set Ws = fncCreateSheet(ThisWorkbook, "Role Colours")
  
    For Each rng In Ws.Range("A2:A6").Cells
      rng.Value = Choose(rng.Row - 1, "AMOR", "ASUP", "BATT", "HOST", "WAIT")
      rng.Interior.Color = Choose(rng.Row - 1, 7592334, 65535, 49407, 14524132, 14791492)
    Next rng
    
    Ws.Range("A1").Value = "Role"
    
    Call subFormatSheet(Ws)
    
  End If
  
End Sub

Public Function fncCreateSheet(Wb As Workbook, strWorksheet As String) As Worksheet

  Application.DisplayAlerts = False
  On Error Resume Next
  Wb.Worksheets(strWorksheet).Delete
  On Error GoTo 0
  Application.DisplayAlerts = True
  
  Wb.Sheets.Add after:=Wb.Sheets(Wb.Sheets.Count)

  ActiveSheet.Name = strWorksheet
  
  Set fncCreateSheet = ActiveSheet

End Function

Public Function fncDoesWorksheetExist(Wb As Workbook, strWorksheet As String) As Boolean
Dim Ws As Worksheet

  For Each Ws In Wb.Worksheets
    If Ws.Name = strWorksheet Then
      fncDoesWorksheetExist = True
    End If
  Next Ws
  
End Function

Public Sub subAddHeaderBlock(Ws As Worksheet)
Dim intColumns As Integer
Dim intRows As Integer
Dim i As Integer

  With Ws
  
    .Activate
  
    .Range("H1:L1").Value = Array("Revised", "Time", 15, 39, 45)
  
    With .Range("A1").CurrentRegion
      
      intColumns = .Columns.Count
      
      intRows = .Rows.Count
      
      With .Rows(1)
        .Interior.Color = RGB(219, 219, 219)
        .VerticalAlignment = xlCenter
        .IndentLevel = 1
        .Font.Bold = True
      End With
      
    End With
    
    With .Range("H1").Resize(intRows, 5).Borders
      .LineStyle = xlContinuous
      .Weight = xlThin
      .ColorIndex = vbBlack
    End With
  
    .Range("1:5").EntireRow.Insert
    
    .Range("A3").Value = "Breakfast"
    .Range("A4").Value = "Lunch"
    .Range("A5").Value = "Dinner"
    
    With .Range("B2")
      .Value = "Bookings"
      .EntireColumn.AutoFit
    End With
    
    For i = 2 To 5
      .Range("C" & i & ":I" & i).Merge
    Next i
    
    .Range("C2").Value = "Function / Special Event"
    
    With .Range("J5:L5")
      .Merge
      .Value = "Breaks"
    End With
    
    With .Range("A1").Resize(5, intColumns)
    
      With .Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = vbBlack
      End With
      
      .RowHeight = 27
      .VerticalAlignment = xlCenter
      .IndentLevel = 1
      .Font.Bold = True
      
      With .Rows(1)
        .Merge
        .Interior.Color = 16115392
        .Value = Ws.Name
        .NumberFormat = fncGetCustomDateFormat(Ws.Name)
        .RowHeight = 44
        .VerticalAlignment = xlCenter
        .HorizontalAlignment = xlCenter
        .Font.Size = 20
      End With
      
    End With
    
    .Range("B2").EntireColumn.AutoFit
    
    .Range("C2").HorizontalAlignment = xlCenter
    
    .Range("C3:I5").Borders(xlInsideVertical).LineStyle = xlNone
    
    .Range("A7").Select
    
    ActiveWindow.FreezePanes = True
    
  End With

End Sub

Private Function fncGetCustomDateFormat(dteDate As Date) As String
    
  Select Case Day(dteDate)
            
    Case Is = 1, 21, 31 'st
                  
      fncGetCustomDateFormat = "DDDD d""st"" MMMM, YYYY"
            
    Case Is = 2, 22 'nd
                
      fncGetCustomDateFormat = "DDDD d""nd"" MMMM, YYYY"
            
    Case Is = 3, 23 'rd
                
      fncGetCustomDateFormat = "DDDD d""rd"" MMMM, YYYY"
            
    Case 4 To 20, 24 To 30 'th
                
      fncGetCustomDateFormat = "DDDD d""th"" MMMM, YYYY"
    
    End Select
          
End Function
 
Upvote 0
Hi Lara

Formatting worksheets often takes a while. It is like formatting any document to get it looking right.

This is the next version. I should have used version numbers.

Lets call this Version 5.

Is this going to be printed out?

If so, then will there ever be more rows than would fit on a page?

Because I have auto fitted the columns they are often different widths because the length of names, for examples varies.

I'm working on some code to make them all a uniform width across all sheets. The sheets will look much better then.

Turning Grid Lines off makes it look better.

VBA Code:
Option Explicit

Public Sub subImportAndSplitData()
Dim i As Integer
Dim WsData As Worksheet
Dim arrData() As Variant
Dim arrDate() As String
Dim rngLoc As Range
 
  ActiveWorkbook.Save
 
  Call subCreateRoleColoursTab
   
  Set WsData = Worksheets("Structured")
 
  WsData.Columns("D").Replace What:="SUP", Replacement:="ASUP", SearchOrder:=xlByRows, LookAt:=xlWhole, MatchCase:=True
   
  arrData = WsData.UsedRange
 
  For i = LBound(arrData) To UBound(arrData)
   
    If arrData(i, 1) = "Loc" Then
   
      Set rngLoc = WsData.Range("A" & i)
     
      With rngLoc
     
        arrDate = Split(.Offset(-4, 0).Value, " ")
   
        Call subCreateWorksheets(rngLoc, arrDate(1) & " " & arrDate(2))
           
      End With
           
    End If
   
  Next i
 
  MsgBox "Data has been processed and separate sheets been created.", vbOKOnly, "Confirmation"

End Sub

Private Sub subCreateWorksheets(rng As Range, strWorksheetName As String)
Dim Ws As Worksheet
            
  Set Ws = fncCreateSheet(ActiveWorkbook, strWorksheetName)
        
  With rng.CurrentRegion
    Ws.Range("A1").Formula2 = "=CHOOSECOLS(VSTACK(TAKE('" & .Parent.Name & "'!" & .Address & ",1),SORT(" & _
    "'" & .Parent.Name & "'!" & .Offset(1, 0).Resize(.Rows.Count - 1.7).Address & ",{4,2,3})),6,5,7,4,2,3,1)"
  End With
 
  With Ws.Range("A1").CurrentRegion
    .Value = .Value
    .Columns("E:F").NumberFormat = "HH:MM"
  End With
 
  Call subSplitByRole(Ws)
 
  Call subAddHeaderBlock(Ws)
 
End Sub

Private Sub subFormatSheet(Ws As Worksheet)

  With Ws.Range("A1").CurrentRegion
   
    With .Borders
      .LineStyle = xlContinuous
      .Weight = xlThin
      .ColorIndex = vbBlack
    End With
   
    .RowHeight = 27
    .Rows(1).Font.Bold = True
    .VerticalAlignment = xlCenter
    .IndentLevel = 1
    .EntireColumn.AutoFit
 
  End With
 
End Sub

Public Sub subSplitByRole(Ws As Worksheet)
Dim arrData() As Variant
Dim i As Integer
Dim strRole As String
Dim lngColour As Long
Dim rngColour As Range

  Ws.Activate
 
  Call subFormatSheet(Ws)
 
  arrData = Ws.Range("A1").CurrentRegion

  strRole = arrData(UBound(arrData), 4)
   
  For i = UBound(arrData) To 1 Step -1
 
    If arrData(i, 4) <> strRole Then
      Ws.Range("A" & i + 1).EntireRow.Insert
      With Ws.Range("A" & i + 1)
        With .Resize(1, 7)
          .Interior.Color = fncGetColour(strRole)
          .Merge
          With .Borders
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = vbBlack
          End With
        End With
        .Value = strRole
        .Font.Bold = True
      End With
      strRole = arrData(i, 4)
    End If
 
  Next i

End Sub

Public Function fncGetColour(strRole As String) As Long
Dim rngColour As Range

  fncGetColour = 16777215

  Set rngColour = Worksheets("Role Colours").Range("A:A").Find(strRole, LookIn:=xlValues, LookAt:=xlWhole)
     
  If Not rngColour Is Nothing Then
 
    fncGetColour = rngColour.Interior.Color
         
  End If

End Function

Public Sub subCreateRoleColoursTab()
Dim Ws As Worksheet
Dim rng As Range

  If Not fncDoesWorksheetExist(ThisWorkbook, "Role Colours") Then

    Set Ws = fncCreateSheet(ThisWorkbook, "Role Colours")
 
    For Each rng In Ws.Range("A2:A6").Cells
      rng.Value = Choose(rng.Row - 1, "AMOR", "ASUP", "BATT", "HOST", "WAIT")
      rng.Interior.Color = Choose(rng.Row - 1, 7592334, 65535, 49407, 14524132, 14791492)
    Next rng
   
    Ws.Range("A1").Value = "Role"
   
    Call subFormatSheet(Ws)
   
  End If
 
End Sub

Public Function fncCreateSheet(Wb As Workbook, strWorksheet As String) As Worksheet

  Application.DisplayAlerts = False
  On Error Resume Next
  Wb.Worksheets(strWorksheet).Delete
  On Error GoTo 0
  Application.DisplayAlerts = True
 
  Wb.Sheets.Add after:=Wb.Sheets(Wb.Sheets.Count)

  ActiveSheet.Name = strWorksheet
 
  Set fncCreateSheet = ActiveSheet

End Function

Public Function fncDoesWorksheetExist(Wb As Workbook, strWorksheet As String) As Boolean
Dim Ws As Worksheet

  For Each Ws In Wb.Worksheets
    If Ws.Name = strWorksheet Then
      fncDoesWorksheetExist = True
    End If
  Next Ws
 
End Function

Public Sub subAddHeaderBlock(Ws As Worksheet)
Dim intColumns As Integer
Dim intRows As Integer
Dim i As Integer

  With Ws
 
    .Activate
 
    .Range("H1:L1").Value = Array("Revised", "Time", 15, 39, 45)
 
    With .Range("A1").CurrentRegion
     
      intColumns = .Columns.Count
     
      intRows = .Rows.Count
     
      With .Rows(1)
        .Interior.Color = RGB(219, 219, 219)
        .VerticalAlignment = xlCenter
        .IndentLevel = 1
        .Font.Bold = True
      End With
     
    End With
   
    With .Range("H1").Resize(intRows, 5).Borders
      .LineStyle = xlContinuous
      .Weight = xlThin
      .ColorIndex = vbBlack
    End With
 
    .Range("1:5").EntireRow.Insert
   
    .Range("A3").Value = "Breakfast"
    .Range("A4").Value = "Lunch"
    .Range("A5").Value = "Dinner"
   
    With .Range("B2")
      .Value = "Bookings"
      .EntireColumn.AutoFit
    End With
   
    For i = 2 To 5
      .Range("C" & i & ":I" & i).Merge
    Next i
   
    .Range("C2").Value = "Function / Special Event"
   
    With .Range("J5:L5")
      .Merge
      .Value = "Breaks"
    End With
   
    With .Range("A1").Resize(5, intColumns)
   
      With .Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = vbBlack
      End With
     
      .RowHeight = 27
      .VerticalAlignment = xlCenter
      .IndentLevel = 1
      .Font.Bold = True
     
      With .Rows(1)
        .Merge
        .Interior.Color = 16115392
        .Value = Ws.Name
        .NumberFormat = fncGetCustomDateFormat(Ws.Name)
        .RowHeight = 44
        .VerticalAlignment = xlCenter
        .HorizontalAlignment = xlCenter
        .Font.Size = 20
      End With
     
    End With
   
    .Range("B2").EntireColumn.AutoFit
   
    .Range("C2").HorizontalAlignment = xlCenter
   
    .Range("C3:I5").Borders(xlInsideVertical).LineStyle = xlNone
   
    .Range("A7").Select
   
    ActiveWindow.FreezePanes = True
   
  End With

End Sub

Private Function fncGetCustomDateFormat(dteDate As Date) As String
   
  Select Case Day(dteDate)
           
    Case Is = 1, 21, 31 'st
                 
      fncGetCustomDateFormat = "DDDD d""st"" MMMM, YYYY"
           
    Case Is = 2, 22 'nd
               
      fncGetCustomDateFormat = "DDDD d""nd"" MMMM, YYYY"
           
    Case Is = 3, 23 'rd
               
      fncGetCustomDateFormat = "DDDD d""rd"" MMMM, YYYY"
           
    Case 4 To 20, 24 To 30 'th
               
      fncGetCustomDateFormat = "DDDD d""th"" MMMM, YYYY"
   
    End Select
         
End Function
It's nearly 2am here and I have been pouring over your code, looking at the wonderful intricacies!

So many amazing functions that I will definitely use in the future, and so interesting to follow the loops slowly in the VBA so I can follow it :)

High and Wilder everything is perfect, I have tested around 10 times and all is working perfectly. I have also made variations of your code to work in other departments in the Hotel simply by changing the role names, range and a few other things :) SO AMAZING!!

Yes we do print them out usually, but would normally just print as fit to page Landscape, so i think that should be fine.

I can't wait to one day be as good as you, and I promise to pass on the knowledge you have showed me to another in the future!!

Lara xx
 
Upvote 0
It's nearly 2am here and I have been pouring over your code, looking at the wonderful intricacies!

So many amazing functions that I will definitely use in the future, and so interesting to follow the loops slowly in the VBA so I can follow it :)

High and Wilder everything is perfect, I have tested around 10 times and all is working perfectly. I have also made variations of your code to work in other departments in the Hotel simply by changing the role names, range and a few other things :) SO AMAZING!!

Yes we do print them out usually, but would normally just print as fit to page Landscape, so i think that should be fine.

I can't wait to one day be as good as you, and I promise to pass on the knowledge you have showed me to another in the future!!

Lara xx

I'm glad that it works and it can be put to a good use.

I'll come and stay in the hotel and have a bottle of your finest champagne on the house although I'm not exactly sure which
number bus I'd need to hop on to get to you.
 
Upvote 0
I'm glad that it works and it can be put to a good use.

I'll come and stay in the hotel and have a bottle of your finest champagne on the house although I'm not exactly sure which
number bus I'd need to hop on to get to you.
You'd have to get to Western Australia! You're welcome any time and drinks on me!! Lara x
 
Upvote 0
I'm glad that it works and it can be put to a good use.

I'll come and stay in the hotel and have a bottle of your finest champagne on the house although I'm not exactly sure which
number bus I'd need to hop on to get to you.
High and Wilder! I'm back again :)

I just noticed that the array data range cuts off the last employee for each sheet as it splits off but I can't work out why!

Could you help me find the error and explain it to me so I understand for next time?

Thanks Sensei!
 
Upvote 0
High and Wilder! I'm back again :)

I just noticed that the array data range cuts off the last employee for each sheet as it splits off but I can't work out why!

Could you help me find the error and explain it to me so I understand for next time?

Thanks Sensei!
I'll have a look at it after lunch.

It will be a quick fix.

Have you altered the code that I sent you?
 
Upvote 0
I'll have a look at it after lunch.

It will be a quick fix.

Have you altered the code that I sent you?
I did a few changes in order for it to work in other departments with different roles etc, but the one for my department is still the same as the most recent one you did for me :)

Bon appetit!
 
Upvote 0
I did a few changes in order for it to work in other departments with different roles etc, but the one for my department is still the same as the most recent one you did for me :)

Bon appetit!
Lara

In the 'subCreateWorksheets' procedure change the 1.7 on the third line of the code below to 1.

Ideally, Excel should not accept anything other than integers when referring to rows but it does.

That was a coding error as it makes no sense at all. Excel seems to round it up or to the nearest whole number.

Lunch was Pizza which is not often eaten here but it was nice.

Back to proper food tonight.

VBA Code:
 With rng.CurrentRegion
    Ws.Range("A1").Formula2 = "=CHOOSECOLS(VSTACK(TAKE('" & .Parent.Name & "'!" & .Address & ",1),SORT(" & _
    "'" & .Parent.Name & "'!" & .Offset(1, 0).Resize(.Rows.Count - 1.7).Address & ",{4,2,3})),6,5,7,4,2,3,1)"
  End With
 
Upvote 0
Works perfectly thank you so much :) Sorry for late reply just did a quick half marathon! Lara x





Lara

In the 'subCreateWorksheets' procedure change the 1.7 on the third line of the code below to 1.

Ideally, Excel should not accept anything other than integers when referring to rows but it does.

That was a coding error as it makes no sense at all. Excel seems to round it up or to the nearest whole number.

Lunch was Pizza which is not often eaten here but it was nice.

Back to proper food tonight.

VBA Code:
 With rng.CurrentRegion
    Ws.Range("A1").Formula2 = "=CHOOSECOLS(VSTACK(TAKE('" & .Parent.Name & "'!" & .Address & ",1),SORT(" & _
    "'" & .Parent.Name & "'!" & .Offset(1, 0).Resize(.Rows.Count - 1.7).Address & ",{4,2,3})),6,5,7,4,2,3,1)"
  End With
 
Upvote 0

Forum statistics

Threads
1,223,227
Messages
6,170,853
Members
452,361
Latest member
d3ad3y3

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