Help: Custom Error Bars and Absolute Cell Reference!

FrozenData

New Member
Joined
Feb 13, 2014
Messages
18
Hi Everyone,

I have a line graph with 8 series of data, all of which have custom error bars which I have calculated. I have to create one of these graphs each time I collect data. What I have been doing is copying the graph I made previously and dragging over the series to the new set of data. It takes a few seconds and its great. The issue I have is the error bar ranges do not move accordingly since they have an absolute reference. So I have to manually reassign the ranges for the custom error each time I collect a new set of data (which is tedious). How can I easily assign/reassign the error bar ranges without doing them individually? I've tried removing the absolute references ($) but they get automatically added back in by excel.

Thanks,
FrozenData
 
So I recorded a macro to added an error bar, but I don't think it will be very helpful.

Code:
Sub errortest()
'
' errortest Macro
'
' Keyboard Shortcut: Option+Cmd+q
'
    ActiveSheet.ChartObjects("Chart 2").Activate
    ActiveChart.SeriesCollection(1).HasErrorBars = True
    ActiveSheet.ChartObjects("Chart 2").Activate
    ActiveChart.SeriesCollection(1).ErrorBars.Select
End Sub

I appreciate all your help!
 
Upvote 0
Goobertron's code ran to completion and generated a chart with error bars on my Mac in Excel 2011 version 14.3.9. I chose column G:G when prompted using the file you provided in an earlier post.
 
Upvote 0
After Jim's reply I decided to go back to my sample data and Goobertron's original code which had worked on my PC and it worked on my mac. Then I tried the code I modified (chart titles and 6 series) and it worked on my sample data. However when I tried to execute the macro on my actual data it failed. I tried saving to a new sheet, changing the format, creating a new module, re-entering the raw data to a new sheet, etc...

Then I finally realized the issue. If the active sheet name has any special characters (i.e. spaces, dashes, etc..) then the macro will fail. Once I realized this I was able to get the program working!!!

Two things I have questions on:

1) Is there any way around this sheet naming issue?

2) the line connecting the data points in the graphs is too thick. How do I reduce the size?

I would like to thank Goobertron again for creating this great code and helping me save so much time!

As I continue to update and modify the code I'll post back here if I can create a better version.

-Frozendata
 
Upvote 0
If you have strange characters or maybe spaces in the worksheet tab "friendly" name then you might want to include single quotation type marks in the code around the ActiveSheet.Name to make sure these get interpreted properly. This is because the error bars are getting passed as R1C1 type references which includes the SheetName!R1C1 type format. Safer to use 'SheetName'!R1C1 I think. This is what Excel does if you reference other sheets in formulas for example.

Not tested but I think this might fix it.

So the last few lines which were;
Code:
        Amount:=ActiveSheet.Name & "!R" & ERRORAROW & "C" & lCol & ":R" & ERRORAROW & "C" & lCol + SERIESWIDTH, _
        MinusValues:=ActiveSheet.Name & "!R" & ERRORAROW & "C" & lCol & ":R" & ERRORAROW & "C" & lCol + SERIESWIDTH
        'Second series
        .SeriesCollection(2).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:=ActiveSheet.Name & "!R" & ERRORBROW & "C" & lCol & ":R" & ERRORBROW & "C" & lCol + SERIESWIDTH, _
        MinusValues:=ActiveSheet.Name & "!R" & ERRORBROW & "C" & lCol & ":R" & ERRORBROW & "C" & lCol + SERIESWIDTH

You can modify to something like

Code:
        .SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & ERRORAROW & "C" & lCol & ":R" & ERRORAROW & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & ERRORAROW & "C" & lCol & ":R" & ERRORAROW & "C" & lCol + SERIESWIDTH
        'Second series
        .SeriesCollection(2).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & ERRORBROW & "C" & lCol & ":R" & ERRORBROW & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & ERRORBROW & "C" & lCol & ":R" & ERRORBROW & "C" & lCol + SERIESWIDTH
 
Last edited:
Upvote 0
Works like a charm!

I can't thank you enough for your help GooberTron, I had made so many post and no one responded and I was about to give up hope. Then you helped me out and I can't thank you enough for that!

I'm planning on learning some VB code and trying to improve the code some more. I want to make so I can pick not only the column but also the row that the data and error start at. Once I accomplish this Would you like me to report back?

-Frozendata
 
Upvote 0
Hi Goobertron,

So I've been working this week making the code you wrote more versatile for my applications. I've come up with this working build where you select the first column of your data, the first row of your data, the first row of error and the number of data columns. This creates a formatted chart to the color scheme I was going for! Also it handles 6 series of data now.

I look forward to seeing your feedback.

-Frozen data

Code:
Sub VarChart()


    Dim chtNew As Chart
    Dim rngColumnZero As Range
    Dim rngRowZero As Range
    Dim rngRowOne As Range
    Dim SERIESWIDTH As Integer
    Dim lCol As Long
    Dim lRow As Long
    Dim lRow2 As Long
    Dim i As Long
    'Const SERIESAROW As Long = 32, SERIESBROW As Long = 33, SERIESCROW As Long = 34, SERIESDROW As Long = 35, SERIESEROW As Long = 36, SERIESFROW As Long = 37,
    'Const SERIESWIDTH As Long = 5
    'Const SERIESARANGE As String = "$D$32", SERIESBRANGE As String = "$D$33", SERIESCRANGE As String = "$D$34", SERIESDRANGE As String = "$D$35", SERIESERANGE As String = "$D$36", SERIESFRANGE As String = "$D$37"
    Const XVALUESROW As Long = 2
    'Const ERRORAROW As Long = 39, ERRORBROW As Long = 40, ERRORCROW As Long = 41, ERRORDROW As Long = 42, ERROREROW As Long = 43, ERRORFROW As Long = 44
    
    'Allow user to choose the column / cell containing the "0" data in, so that the appropriate range can be selected
    'If the user cancels the InputBox then an error will be generated, hence error handling is temporarily disabled
    On Error Resume Next 'Error handling disabled
    Set rngColumnZero = Application.InputBox(Prompt:="Please select first data column", Title:="Graph maker", Type:=8)
    If rngColumnZero Is Nothing Then Exit Sub 'If user presses cancel this will be true, so exit routine
    On Error GoTo 0 'Error handling re-enabled
    lCol = rngColumnZero.Column 'Store the numerical column reference as a variable to use
    
    'Test Code 1
    On Error Resume Next 'Error handling disabled
    Set rngRowZero = Application.InputBox(Prompt:="Please select first data row", Title:="Graph maker", Type:=8)
    If rngRowZero Is Nothing Then Exit Sub 'If user presses cancel this will be true, so exit routine
    On Error GoTo 0 'Error handling re-enabled
    lRow = rngRowZero.Row 'Store the numerical row reference as a variable to use
    
    'Test Code 2
    On Error Resume Next 'Error handling disabled
    Set rngRowOne = Application.InputBox(Prompt:="Please select first error row", Title:="Graph maker", Type:=8)
    If rngRowOne Is Nothing Then Exit Sub 'If user presses cancel this will be true, so exit routine
    On Error GoTo 0 'Error handling re-enabled
    lRow2 = rngRowOne.Row 'Store the numerical row reference as a variable to use
    
    'Test Code 3
    On Error Resume Next 'Error handling disabled
    SERIESWIDTH = Application.InputBox(Prompt:="Please ender number of columns", Title:="Graph maker", Type:=1) - 1
    On Error GoTo 0 'Error handling re-enabled
    
    'Create new chart as object for later manipulation
    Set chtNew = ActiveSheet.Shapes.AddChart(xlLineMarkers).Chart
    With chtNew
        'Delete all auto added series which might get added if Excel tries to 'guess' the layout of your data
        For i = .SeriesCollection.Count To 1 Step -1
            .SeriesCollection(i).Delete
        Next i
        'Add both series
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Name = ActiveSheet.Range("D" & lRow)
        .SeriesCollection(1).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow, lCol), ActiveSheet.Cells(lRow, lCol + SERIESWIDTH))
        .SeriesCollection(1).XValues = ActiveSheet.Range(ActiveSheet.Cells(XVALUESROW, lCol), ActiveSheet.Cells(XVALUESROW, lCol + SERIESWIDTH))
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = ActiveSheet.Range("D" & lRow + 1)
        .SeriesCollection(2).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow + 1, lCol), ActiveSheet.Cells(lRow + 1, lCol + SERIESWIDTH))
        .SeriesCollection.NewSeries
        .SeriesCollection(3).Name = ActiveSheet.Range("D" & lRow + 2)
        .SeriesCollection(3).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow + 2, lCol), ActiveSheet.Cells(lRow + 2, lCol + SERIESWIDTH))
        .SeriesCollection.NewSeries
        .SeriesCollection(4).Name = ActiveSheet.Range("D" & lRow + 3)
        .SeriesCollection(4).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow + 3, lCol), ActiveSheet.Cells(lRow + 3, lCol + SERIESWIDTH))
        .SeriesCollection.NewSeries
        .SeriesCollection(5).Name = ActiveSheet.Range("D" & lRow + 4)
        .SeriesCollection(5).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow + 4, lCol), ActiveSheet.Cells(lRow + 4, lCol + SERIESWIDTH))
        .SeriesCollection.NewSeries
        .SeriesCollection(6).Name = ActiveSheet.Range("D" & lRow + 5)
        .SeriesCollection(6).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow + 5, lCol), ActiveSheet.Cells(lRow + 5, lCol + SERIESWIDTH))
        'Put legend at top
        .SetElement (msoElementLegendTop)
        'Tidy up gridlines and set y axis spacing
        .Axes(xlValue).MajorGridlines.Delete
        .Axes(xlValue).MinimumScale = 0
        .Axes(xlValue).MaximumScale = 60
        .Axes(xlValue).MajorUnit = 10
        .Axes(xlValue).TickLabels.NumberFormat = "0"
        'Set axis font size
        .Axes(xlCategory).TickLabels.Font.Size = 12
        .Axes(xlValue).TickLabels.Font.Size = 12
        'Resize chart overall
        .Parent.Height = 320
        .Parent.Width = 250
        'Resize plot area within chart
        .PlotArea.Height = 250
        .PlotArea.Top = 40
        .PlotArea.Width = 220
        .PlotArea.Left = 7
        ''''Series markers / lines
        'Triangle style (3) marker size 7
        .SeriesCollection(1).MarkerStyle = 3
        .SeriesCollection(1).MarkerSize = 7
        .SeriesCollection(1).MarkerBackgroundColor = RGB(0, 102, 0)
        .SeriesCollection(1).MarkerForegroundColor = RGB(0, 102, 0)
        .SeriesCollection(1).Format.Line.Weight = 1
        .SeriesCollection(2).MarkerStyle = 3
        .SeriesCollection(2).MarkerSize = 7
        .SeriesCollection(2).MarkerBackgroundColor = RGB(204, 255, 204)
        .SeriesCollection(2).MarkerForegroundColor = RGB(204, 255, 204)
        .SeriesCollection(2).Format.Line.Weight = 1
        .SeriesCollection(3).MarkerStyle = 3
        .SeriesCollection(3).MarkerSize = 7
        .SeriesCollection(3).Format.Line.Weight = 1
        .SeriesCollection(3).MarkerBackgroundColor = RGB(0, 0, 0)
        .SeriesCollection(3).MarkerForegroundColor = RGB(0, 0, 0)
        .SeriesCollection(4).MarkerStyle = 3
        .SeriesCollection(4).MarkerSize = 7
        .SeriesCollection(4).Format.Line.Weight = 1
        .SeriesCollection(4).MarkerBackgroundColor = RGB(192, 192, 192)
        .SeriesCollection(4).MarkerForegroundColor = RGB(192, 192, 192)
        .SeriesCollection(5).MarkerStyle = 3
        .SeriesCollection(5).MarkerSize = 7
        .SeriesCollection(5).Format.Line.Weight = 1
        .SeriesCollection(5).MarkerBackgroundColor = RGB(255, 0, 0)
        .SeriesCollection(5).MarkerForegroundColor = RGB(255, 0, 0)
        .SeriesCollection(6).MarkerStyle = 3
        .SeriesCollection(6).MarkerSize = 7
        .SeriesCollection(6).Format.Line.Weight = 1
        .SeriesCollection(6).MarkerBackgroundColor = RGB(255, 229, 204)
        .SeriesCollection(6).MarkerForegroundColor = RGB(255, 229, 204)
    End With
    
    'Format line as black for each series
    For i = 1 To 6
        With chtNew.SeriesCollection(i).Format.Line
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorText1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
        End With
    Next i
    
    With chtNew
        'Legend text size
        .Legend.Format.TextFrame2.TextRange.Font.Size = 10.9
        'Move legend
        .Legend.Left = 58
        .Legend.Top = 47
        .Legend.Width = 144
        'Error bars pass as R1C1 references! Doesn't seem to like standard range addresses. See http://peltiertech.com/WordPress/custom-error-bars-in-excel-charts/#more-3221 for details
        .SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 & "C" & lCol & ":R" & lRow2 & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 & "C" & lCol & ":R" & lRow2 & "C" & lCol + SERIESWIDTH
        'Second series
        .SeriesCollection(2).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 + 1 & "C" & lCol & ":R" & lRow2 + 1 & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 + 1 & "C" & lCol & ":R" & lRow2 + 1 & "C" & lCol + SERIESWIDTH
        'Third series
        .SeriesCollection(3).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 + 2 & "C" & lCol & ":R" & lRow2 + 2 & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 + 2 & "C" & lCol & ":R" & lRow2 + 2 & "C" & lCol + SERIESWIDTH
        'Forth series
        .SeriesCollection(4).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 + 3 & "C" & lCol & ":R" & lRow2 + 3 & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 + 3 & "C" & lCol & ":R" & lRow2 + 3 & "C" & lCol + SERIESWIDTH
        'Fifth series
        .SeriesCollection(5).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 + 4 & "C" & lCol & ":R" & lRow2 + 4 & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 + 4 & "C" & lCol & ":R" & lRow2 + 4 & "C" & lCol + SERIESWIDTH
        'Sixth series
        .SeriesCollection(6).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
        Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 + 5 & "C" & lCol & ":R" & lRow2 + 5 & "C" & lCol + SERIESWIDTH, _
        MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 + 5 & "C" & lCol & ":R" & lRow2 + 5 & "C" & lCol + SERIESWIDTH
        'Chart Lables
        .HasTitle = True
        .ChartTitle.Text = ActiveSheet.Range(ActiveSheet.Cells(1, lCol), ActiveSheet.Cells(1, lCol + 0))
        'X axis name
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X-axis Title"
        'Y-axis name
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y-axis Title"
    End With
    
End Sub
 
Upvote 0
The only thing I would look to do now that you have > 2 series is to encapsulate as much as possible in loops to save on repetitive looking code. This would also allow the number of series to be flexible based on user input (i.e. use variables to determine how long the loop should run for). The obvious things to wrap up in loops would be the addition of the series, the formatting of the series and the error bars. For quick / fixed macros you may be reluctant to use lots of variables and loops but my experience is that eventually you will want to extend the code or use it in something else so keeping things general and flexible is good. I didn't do this when I first was learning VBA / programming so is probably a rite of passage somehow - it makes more sense in the long run if you have been through that 'not really best practice' design choice as a beginner, realised it's a pain, and done something about it!
Good luck and have fun.
 
Upvote 0
I gave the loops a shot and it does clean a lot of things up. Take a look!

Code:
Sub VarChart()

    Dim chtNew As Chart
    Dim rngColumnZero As Range
    Dim rngRowZero As Range
    Dim rngRowOne As Range
    Dim SERIESWIDTH As Integer
    Dim SeriesNum As Integer
    Dim lCol As Long
    Dim lRow As Long
    Dim lRow2 As Long
    Dim i As Long
    Const XVALUESROW As Long = 2
    
    'Allow user to choose the column / cell containing the "0" data in, so that the appropriate range can be selected
    'If the user cancels the InputBox then an error will be generated, hence error handling is temporarily disabled
    On Error Resume Next 'Error handling disabled
    Set rngColumnZero = Application.InputBox(Prompt:="Please select first data column", Title:="Graph maker", Type:=8)
    If rngColumnZero Is Nothing Then Exit Sub 'If user presses cancel this will be true, so exit routine
    On Error GoTo 0 'Error handling re-enabled
    lCol = rngColumnZero.Column 'Store the numerical column reference as a variable to use
    
    'Get Data Row
    On Error Resume Next 'Error handling disabled
    Set rngRowZero = Application.InputBox(Prompt:="Please select first data row", Title:="Graph maker", Type:=8)
    If rngRowZero Is Nothing Then Exit Sub 'If user presses cancel this will be true, so exit routine
    On Error GoTo 0 'Error handling re-enabled
    lRow = rngRowZero.Row 'Store the numerical row reference as a variable to use
    
    'Get Error Row
    On Error Resume Next 'Error handling disabled
    Set rngRowOne = Application.InputBox(Prompt:="Please select first error row", Title:="Graph maker", Type:=8)
    If rngRowOne Is Nothing Then Exit Sub 'If user presses cancel this will be true, so exit routine
    On Error GoTo 0 'Error handling re-enabled
    lRow2 = rngRowOne.Row 'Store the numerical row reference as a variable to use
    
    'Get Number of Columns
    On Error Resume Next 'Error handling disabled
    SERIESWIDTH = Application.InputBox(Prompt:="Please ender number of columns", Title:="Graph maker", Type:=1) - 1
    On Error GoTo 0 'Error handling re-enabled
    
    'Get Number of Columns
    On Error Resume Next 'Error handling disabled
    SeriesNum = Application.InputBox(Prompt:="Please ender number of Series", Title:="Graph maker", Type:=1)
    On Error GoTo 0 'Error handling re-enabled
    
    'Create new chart as object for later manipulation
    Set chtNew = ActiveSheet.Shapes.AddChart(xlLineMarkers).Chart
    With chtNew
        'Delete all auto added series which might get added if Excel tries to 'guess' the layout of your data
        For i = .SeriesCollection.Count To 1 Step -1
            .SeriesCollection(i).Delete
        Next i
        'Addseries
        For i = 1 To SeriesNum
            .SeriesCollection.NewSeries
            .SeriesCollection(i).Name = ActiveSheet.Range("D" & lRow + i - 1)
            .SeriesCollection(i).Values = ActiveSheet.Range(ActiveSheet.Cells(lRow + i - 1, lCol), ActiveSheet.Cells(lRow + i - 1, lCol + SERIESWIDTH))
            .SeriesCollection(i).XValues = ActiveSheet.Range(ActiveSheet.Cells(XVALUESROW, lCol), ActiveSheet.Cells(XVALUESROW, lCol + SERIESWIDTH))
        Next i
        For i = 1 To SeriesNum
            .SeriesCollection(i).MarkerStyle = 3
            .SeriesCollection(i).MarkerSize = 7
            .SeriesCollection(i).Format.Line.Weight = 1
        Next i
        'Put legend at top
        .SetElement (msoElementLegendTop)
        'Tidy up gridlines and set y axis spacing
        .Axes(xlValue).MajorGridlines.Delete
        .Axes(xlValue).MinimumScale = 0
        .Axes(xlValue).MaximumScale = 60
        .Axes(xlValue).MajorUnit = 10
        .Axes(xlValue).TickLabels.NumberFormat = "0"
        'Set axis font size
        .Axes(xlCategory).TickLabels.Font.Size = 12
        .Axes(xlValue).TickLabels.Font.Size = 12
        'Resize chart overall
        .Parent.Height = 320
        .Parent.Width = 250
        'Resize plot area within chart
        .PlotArea.Height = 250
        .PlotArea.Top = 40
        .PlotArea.Width = 220
        .PlotArea.Left = 7
        ''''Series markers / lines
        'Triangle style (3) marker size 7
    End With
       
    'Format line as black for each series
    For i = 1 To SeriesNum
        With chtNew.SeriesCollection(i).Format.Line
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorText1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
        End With
    Next i
    
    With chtNew
        'Legend text size
        .Legend.Format.TextFrame2.TextRange.Font.Size = 10.9
        'Move legend
        .Legend.Left = 58
        .Legend.Top = 47
        .Legend.Width = 144
        'Error bars pass as R1C1 references! Doesn't seem to like standard range addresses. See http://peltiertech.com/WordPress/custom-error-bars-in-excel-charts/#more-3221 for details
        For i = 1 To SeriesNum
            .SeriesCollection(i).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, _
            Amount:="'" & ActiveSheet.Name & "'!R" & lRow2 + i - 1 & "C" & lCol & ":R" & lRow2 + i - 1 & "C" & lCol + SERIESWIDTH, _
            MinusValues:="'" & ActiveSheet.Name & "'!R" & lRow2 + i - 1 & "C" & lCol & ":R" & lRow2 + i - 1 & "C" & lCol + SERIESWIDTH
        Next i
        'Chart Lables
        .HasTitle = True
        .ChartTitle.Text = ActiveSheet.Range(ActiveSheet.Cells(1, lCol), ActiveSheet.Cells(1, lCol + 0))
        'X axis name
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X - Axis"
        'Y-axis name
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y - Axis"
    End With
    
End Sub
 
Upvote 0

Forum statistics

Threads
1,226,882
Messages
6,193,481
Members
453,803
Latest member
hbvba

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