AW: Einträge nach AutoFilter auslesen
16.10.2007 12:15:25
fcs
Hallo Tommi,
Formellösung ist bei der komplexen Auswertung kaum noch möglich bzw. erforderdert etliche Hilfsspalten und die Nutzung einer nicht mehr veröffentlichten Funktion aus Excel 4.0.
Einfacher ist hier die Verwendung eines Makros, dass die sichtbaren Daten von Tab1 nach Tab2 überträgt unddabei doppelte Einträge verhindert.
Gruß
Franz
Sub Von1nach2()
'Überträgt die sichtbaren Datenzeilen von Blatt 1 nach Blatt 2 _
wobei keine doppelten Einträge in den Spalten übertragen werden
Dim wksQ As Worksheet, wksZ As Worksheet
Dim Zeile1 As Long, Spalte As Integer
Dim arrZeiSpa2(1 To 3, 1 To 2) As Integer
Set wksQ = Worksheets("Quelle")
Set wksZ = Worksheets("Ziel")
With wksZ
'Startzeile für Einträge im Zielblatt
Zeile2Start = 2
arrZeiSpa2(1, 1) = Zeile2Start 'Stadt
arrZeiSpa2(2, 1) = Zeile2Start 'Name
arrZeiSpa2(3, 1) = Zeile2Start 'deutsch/englisch
'Spalten für die Einträge im Blatt 2
arrZeiSpa2(1, 2) = 2 'Stadt
arrZeiSpa2(2, 2) = 3 'Name
arrZeiSpa2(3, 2) = 4 'deutsch/englisch
'vorhandene Daten löschen
.Range(.Cells(Zeile2Start, arrZeiSpa2(1, 2)), _
.Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, arrZeiSpa2(3, 2))).ClearContents
For Zeile1 = 2 To wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
If wksQ.Rows(Zeile1).Hidden = False Then
'Einträge in Quellzeile abarbeiten
For Spalte = 1 To 3
'Prüfung ob Eintrag schon vorhanden
If Application.WorksheetFunction.CountIf(.Range(.Cells(Zeile2Start, _
arrZeiSpa2(Spalte, 2)), .Cells(arrZeiSpa2(Spalte, 1), arrZeiSpa2(Spalte, 2))), _
wksQ.Cells(Zeile1, Spalte).Value) = 0 Then
'Wert eintragen
.Cells(arrZeiSpa2(Spalte, 1), arrZeiSpa2(Spalte, 2)).Value = _
wksQ.Cells(Zeile1, Spalte).Value
'Zeilenzähler für Spalte in Zieltabelle erhöhen
arrZeiSpa2(Spalte, 1) = arrZeiSpa2(Spalte, 1) + 1
End If
Next
End If
Next
End With
End Sub