Hi Leute,
Zuerst einmal ich möchte nicht mit einem Array arbeiten.
Ich weiß es ist schneller, besser usw, aber ich kann damit nicht umgehen.
Deshalb bitte ich euch das ganze bitte so zu machen, das ich es als "Gelegenheitsschreiber mit geringen Kentnisse" auch bearbeiten und verstehen kann.
Danke
Ich hatte eine suche mit find gemacht, die auch sehr gut (nach Hilfe von euch) läuft.
"
'Meldungsnummern im Datenexport
With Workbooks(QName.Name).Worksheets(QSheet.Name) ' Mit der Quelldatei, Quellsheet
Set rngDatenexport = .Range("A3", .Cells(.Rows.Count, "A").End(xlUp)) 'Die Range "A2" bis letzte Zeile in Spalte "A"
End With
'Meldungsnummern in der Dokumentation
With Workbooks(ZName).Worksheets(ZSheet) ' mit der Zieldatei, Zielsheet
Set rngDokumentation = .Range("C3", .Cells(.Rows.Count, "C").End(xlUp)) 'Die Range "C3" bis letzte Zeile in Spalte "C"
End With
'xxxxxxxxxxxxxxxxxxxxxxxx Und die Suche beginnt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dim rngDatenexportNr As Excel.Range
Dim rngDokumentationNr As Excel.Range
Dim ZZeile As Long
Dim QZeile As Long
Dim QletzteZeile As Long
For Each rngDatenexportNr In rngDatenexport.Cells ' Das weiss ich nicht was es tut. Ich glaube das setzt die Range in einzelne Zellen um
Set rngDokumentationNr = rngDokumentation.Find( _ 'hier fängst man die gefundenen Werte ein
What:=rngDatenexportNr.Value, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
MatchCase:=False)
QZeile = rngDatenexportNr.Row 'Ermitteln der Quellzeile
Soweit so gut. Davor und danach kommt noch eine Menge Code.
Die Tabellen haben über 2500 Zeilen, womit ich bei der Find Methode beim Finden jeweils 3-4 Sekunden benötige.
Jetzt ist es so, das man mir gesagt hat, das die Match Methode schneller wäre. (Ich weiß Array ist noch schneller, aber das kann ich nicht.)
Also habe ich den Code versucht als Match umzuschreiben.
'Meldungsnummern im Datenexport
With Workbooks(QName.Name).Worksheets(QSheet.Name) ' Mit der Quelldatei, Quellsheet
Set rngDatenexport = .Range("A3", .Cells(.Rows.Count, "A").End(xlUp)) 'Die Range "A2" bis letzte Zeile in Spalte "A"
End With
'Meldungsnummern in der Dokumentation
With Workbooks(ZName).Worksheets(ZSheet) ' mit der Zieldatei, Zielsheet
Set rngDokumentation = .Range("C3", .Cells(.Rows.Count, "C").End(xlUp)) 'Die Range "C3" bis letzte Zeile in Spalte "C"
End With
'xxxxxxxxxxxxxxxxxxxxxxxx Und die Suche beginnt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dim rngDatenexportNr As Excel.Range
Dim rngDokumentationNr As Excel.Range
Dim ZZeile As Long
Dim QZeile As Long
Dim QletzteZeile As Long
For Each rngDatenexportNr In rngDatenexport.Cells ' Das weiss ich nicht was es tut. Ich glaube das setzt die Range in einzelne Zellen um
rngDokumentationNr = Application.Match(rngDatenexport, rngDokumentation, 0)
QZeile = rngDatenexportNr.Row 'Ermitteln der Quellzeile
Leider komme ich mit der Dokumentation über Match nicht klar.
Es wäre toll, wenn ihr mir dabei helfen könntet.
Zur Info:
rngDatenexport = .Count = 1680 (Zeilen im Quellsheet)
rngDokumentation = .Count = 2398 (Zeilen im Ziellsheet)
rngDatenexportNr = Wert aus der Zelle im Quellsheet
rngDokumentationNr = Nothing
Auch wenn ich wie in einem Video erklärt den Code abändere:
rngDokumentationNr = Application.Match(rngDatenexport.Value, rngDokumentation.Columns, 0)
funktioniert es nicht.
Danke
|