AW: Filtern
08.08.2011 11:02:33
Tino
Hallo,
kannst mal diesen Code testen.
Sub Start()
Dim ArrayDaten, ArrayNull(), ArraySonsige()
Dim lngMaxCol&, nRow&, nCountNull&, nCountSo&, n&
With Sheets("Tabelle1") 'Quelle evtl. anpassen
'hier ab A2 evtl. anpassen, Zeile 1 Überschrift?
ArrayDaten = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 4)
End With
lngMaxCol = Ubound(ArrayDaten, 2)
Redim ArrayNull(1 To Ubound(ArrayDaten), 1 To lngMaxCol)
Redim ArraySonsige(1 To Ubound(ArrayDaten), 1 To lngMaxCol)
For nRow = 1 To Ubound(ArrayDaten)
If ArrayDaten(nRow, lngMaxCol) = 0 Then
nCountNull = nCountNull + 1
For n = 1 To lngMaxCol
ArrayNull(nCountNull, n) = ArrayDaten(nRow, n)
Next n
Else
nCountSo = nCountSo + 1
For n = 1 To lngMaxCol
ArraySonsige(nCountSo, n) = ArrayDaten(nRow, n)
Next n
End If
Next nRow
'Ausgabe mit 0
With Sheets("Tabelle2") 'Tabelle anpassen
'einfügen ab A2, Zeile 1 für Überschrift
.Range("A2", .Cells(.Rows.Count)).Resize(, 4).Clear
If nCountNull > 0 Then
With .Range("A2").Resize(Ubound(ArrayNull), lngMaxCol)
.Cells = ArrayNull
'evtl. sonstige Formatierung
'...
End With
End If
End With
'Ausgabe sonstige
With Sheets("Tabelle3") 'Tabelle anpassen
'einfügen ab A2, Zeile 1 für Überschrift
.Range("A2", .Cells(.Rows.Count)).Resize(, 4).Clear
If nCountSo > 0 Then
With .Range("A2").Resize(Ubound(ArraySonsige), lngMaxCol)
.Cells = ArraySonsige
'evtl. sonstige Formatierung
'...
End With
End If
End With
End Sub
Gruß Tino