====== Auto-group entries in Excel ====== This macro creates outline groups automatically based on values in a sorted grouping column. e.g. Given this set of data: | A | 1 | | A | 2 | | A | 3 | | B | 1 | | B | 2 | | C | 1 | | C | 2 | | C | 3 | | C | 4 | the macro will create three collapsible groups: A, B and C. The macro assumes that your grouping direction is 'Summary rows **above** detail'. Sub AutoGroupEntries() 'Application.ScreenUpdating = False 'disable screen update while running 'Define Variables - these will be set based on the current cellpointer position Dim groupingColumn As Integer 'index for the (sorted) column containing group identifiers Dim firstRow As Integer 'number of the first row of data for grouping Dim lastRow As Integer 'number of the first row of data for grouping groupingColumn = ActiveCell.Column firstRow = ActiveCell.Row lastRow = ActiveSheet.UsedRange.Rows.Count 'remove any existing outlining Cells.ClearOutline 'step through rows from firstRow, grouping items until lastRow is reached Dim i, groupStart, groupEnd As Integer groupStart = firstRow + 1 'for the first group For i = firstRow + 1 To lastRow + 1 If Cells(i, groupingColumn).Value <> Cells(i - 1, groupingColumn).Value Then 'at end of group groupEnd = i - 1 Rows(groupStart & ":" & groupEnd).Select 'select group of rows Selection.Rows.Group 'create group for selected rows groupStart = groupEnd + 2 'set start for the next group End If Next i Application.ScreenUpdating = True 'enable screen update when done End Sub {{tag> excel}}