Thema Datum  Von Nutzer Rating
Antwort
Rot Eine Suche mit Match läuft nicht.
17.01.2023 12:55:21 Bernd
NotSolved
17.01.2023 15:22:09 Gast70917
NotSolved
17.01.2023 16:36:52 Bernd
NotSolved
17.01.2023 18:24:18 ralf_b
Solved
17.01.2023 19:25:05 Bernd
Solved
17.01.2023 21:50:35 Bernd
Solved

Ansicht des Beitrags:
Von:
Bernd
Datum:
17.01.2023 12:55:21
Views:
87
Rating: Antwort:
  Ja
Thema:
Eine Suche mit Match läuft nicht.

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Eine Suche mit Match läuft nicht.
17.01.2023 12:55:21 Bernd
NotSolved
17.01.2023 15:22:09 Gast70917
NotSolved
17.01.2023 16:36:52 Bernd
NotSolved
17.01.2023 18:24:18 ralf_b
Solved
17.01.2023 19:25:05 Bernd
Solved
17.01.2023 21:50:35 Bernd
Solved