Dela upp listor mha autofilter
Här visas en teknik för att skapa ny arbetsblad och kopiera över utvald data till respektive blad mha autofilter.
Tipset visar hur vi kan använda oss av flera urvalskriterium för att styra händelsutvecklingen.
Option Explicit
Sub Dela_Upp_Autofilter()
'© 2003 Alla rättigheter XL-Dennis
Dim wbBook As Workbook
Dim wsBlad As Worksheet
Dim rnNamn As Range, rnFilter As Range, rnData As Range
Dim vaNamn As Variant
Dim ncNamn As New Collection
Dim i As Long, j As Long
Set wbBook = ThisWorkbook
Set wsBlad = wbBook.Worksheets("Blad1")
With wsBlad
Set rnFilter = .Range("A1")
Set rnNamn = .Range(.Range("A2"), .Range("A65536").End(xlUp))
Set rnData = .Range(.Range("A2"), .Range("B65536").End(xlUp))
End With
vaNamn = rnNamn.Value
'Skapar en unik lista av namn.
For i = LBound(vaNamn) To UBound(vaNamn)
On Error Resume Next
ncNamn.Add vaNamn(i, 1), CStr(vaNamn(i, 1))
Next
Application.ScreenUpdating = False
For j = 1 To ncNamn.Count
'Filtrerar utifrån namn från den unika listan.
rnFilter.AutoFilter Field:=1, Criteria1:=ncNamn(j)
'Kopierar de synliga posterna.
rnData.SpecialCells(xlCellTypeVisible).Copy
wbBook.Worksheets.Add After:=wsBlad
With ActiveSheet
.Name = ncNamn(j)
'Klistrar in de kopierade posterna.
.Paste
.Range("A1:B1").Font.Bold = True
'Skapar delsummor i respektive arbetsblad.
.Range("A1").Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _
SummaryBelowData:=True
.Columns("A:B").EntireColumn.AutoFit
End With
rnFilter.AutoFilter
Next
Application.ScreenUpdating = True
End Sub