Greetings! I am currently redesigning a workbook that is tracking the daily output of a number of wells. The original tracked 100 wells, but the new version could track anywhere up to 1000 wells. I have been trying to find a method of getting around typing up to 1000 column numbers into the TotalList:=Array (3,4,5,etc.) statement. After a fair bit of research I created the following code (based on examples that seem to have worked for others:
Sub WklySubtotal()
Dim varCols() As Variant 'array to hold column numbers
Dim intCount As Integer 'for..next counter
Dim intMaxCol As Integer 'number of columns to subtotaled
Sheets("Sheet1").Select
Cells(1, 3).Select
Selection.End(xlToRight).Select
intMaxCol = ActiveCell.Column
ReDim varCols(intMaxCol - 2)
For intCount = 3 To intMaxCol
varCols(intCount - 3) = intCount
' Debug.Print intCount - 3, varCols(intCount - 3)
Next intCount
Selection.Subtotal Groupby:=1, Function:=xlAverage, TotalList:=varCols, _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
' Selection.Subtotal Groupby:=1, Function:=xlAverage, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), _
' Replace:=True, PageBreaks:=False, SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
Columns("B:B").Select
Selection.EntireColumn.Hidden = True
End Sub
The commented out code (where I entered the column numbers in the array) works just fine. The version using the varCols variant generates Run time error 1004 - "Subtotal method of Range class failed"
The debug statement showed that the proper column numbers are contained in the variant array.
I am using Excel 2013 on a Windows 10 platform, but I am getting the same results with 2010 and 2016, also on Windows 10.
I have included a sample of the data.
Any help is greatly appreciated!
Bookmarks