@Mase
Hallo Marco
Erst einmal vielen Dank für deine Antworten.
Leider bin ich auf der Suche nach Lösungen nur auf weitere Probleme gestoßen.
Ich versuche es einmal hier darzustellen:
Weg Array:
Dazu musste alle Element in ein Array packen, welche *.AI oder *.BI etc sind und dann eben ohne Platzhalter filtern.
Das geht aber nicht wenn die Elemente .AI, .BI, :AV, oder .BV nur ein Teil des String ist. Richtig verstanden?
Ob Du ducrch die Elemente loopst und mit IF..Like... arbeitest
Das wäre die "klassische Methode" als Suche wie ich sie für 31/ 61 verwende.
' Nach 31 suchen
'Letzte Zeile feststellen
With Worksheets(QSheet.Name)
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With Worksheets(QSheet.Name)
Set Kopierange = .Rows(1)
For SuchZeile = 1 To loLetzte
If .Cells(SuchZeile, 10).Value = 31 Then
Set Kopierange = Union(Kopierange, .Rows(SuchZeile))
End If
Next SuchZeile
End With
' Nach 61 suchen
With Worksheets(QSheet.Name)
For SuchZeile = 1 To loLetzte
If .Cells(SuchZeile, 10).Value = 61 Then
Set Kopierange = Union(Kopierange, .Rows(SuchZeile))
End If
Next SuchZeile
Kopierange.Copy Destination:=Worksheets(Ort31).Range("A1")
End With
Hier wäre eine übergeordnete Schleife hilfreich, die die Suchwerte in verschiedenen Variablen speichert.
'** Anzahl der Kriterien festlegen
lngCriteriaCount = 4
'** Variable neu dimensionieren da die Criterial mit 0 beginnen
ReDim arrCriteria(0 To lngCriteriaCount - 1)
'** Filterkriterien festlegen
arrCriteria(0) = "*.AI*"
arrCriteria(1) = "*.BI*"
arrCriteria(2) = "*.AV*"
arrCriteria(3) = "*.BV*"
Und dies irgendwie in die Schleife mit einbauen, als Next arrCriteria.
Das bekomme ich aber irgendwie nicht hin.
...oder in ein temp.Worksheet
Das verstehe ich leider nicht.
Mit einem Temporären Worksheet habe ich noch nie gearbeitet und weiß nicht wie ich so etwas erstellen / bearbeiten / beenden soll.
mit Duplicate entfernen bleibt Dir überlassen.
Verstehe ich überhaupt nicht. Liegt aber wahrscheinlich daran, das ich das mit dem Tempsheet schon nicht verstehe.
Ich würde mich dann doch eher für die Klassische Variante entscheiden, muss dort halt mehrere Abfragen hintereinander machen, da ich das mit dem Übergeordneten Loop nicht hinbekomme.
Weg SQL:
SELECT * FROM `Tabelle1$`WHERE [Spalte] NOT LIKE *:AI usw usf.
Soweit ich das Googeln konnte geht das nur in einer Datenbank. Bedeutet ich müsste die Tabelle erst in eine Query umwandeln und mich dann in Query einfuchsen.
Dann lieber Klassisch. :-)
Per SQL alle Filterkriterien finden, in das Array packen (aber komplette Elemente, also ohne Platzhalter(!)) und dann den Parameter Operator:=xlFilterValues damit füttern.
Damit findet man (wenn ich das richtig verstehe) keine Teilstring, oder? Fällt also weg.
Kann ich eh nicht
ADODB.Recordset (gerne auch die Recordset.Filter-Methode() anwenden anstelle der Where-clause)
Hat ebenfalls mit Datenbank Access zu tun und muss erst umgewandelt werden. Zu kompliziert für mich.
Bleibt also für mich die klassische Variante als Weg den ich nachvollziehen kann übrig.
Danke für deine Optionen.
Jetzt muss ich nur noch sehen wie ich das mit dem Loop hinbekomme.
Danke
|