Thema Datum  Von Nutzer Rating
Antwort
08.07.2021 11:26:37 Bernd
NotSolved
08.07.2021 12:51:52 Gast74527
NotSolved
Rot schnellere Möglichkeit nach Wert in 2 Tabellen zu Suchen?
08.07.2021 15:08:45 Bernd
NotSolved
08.07.2021 16:19:33 Bernd
NotSolved
08.07.2021 17:02:57 Mase
NotSolved
08.07.2021 17:50:39 Bernd
NotSolved
08.07.2021 16:36:22 Gast70993
NotSolved
08.07.2021 18:02:01 Bernd
NotSolved

Ansicht des Beitrags:
Von:
Bernd
Datum:
08.07.2021 15:08:45
Views:
518
Rating: Antwort:
  Ja
Thema:
schnellere Möglichkeit nach Wert in 2 Tabellen zu Suchen?

Ich habe das aus einem anderen Code wo ich bereits eine Suche habe laufenlassen mit weniger Einträgen.

Dort hatte es bereits lange gedauert.

Mit so vielen will ich es mir gar nicht erst ausmalen, wie lange er da braucht.

da ich gerade an der Übergabe einer Variablen aus einer Userform hänge, habe ich den Code noch nicht getestet.

Dies soll auch nur grob zeigen in welche Richtung mein Code laufen soll. Der der zu langsam ist.

Ich habe jetzt etwas gelesen, das man mit einem Array arbeiten soll, da die Werte dabei in den Arbeitsspeicher geschrieben werden und die Abarbeitung deutlich schneller sein soll.


Die Variablen habe ich noch nicht abgeändert. Ich habe aber versucht die Erklärungen dazu zu kommentieren. ich hoffe es Verwirrt nicht zu sehr.

Solltest du in dem Code Fehler finden, kannst du mir bitte sofort bescheid sagen, dan ändere ich es gleich ab.

'Suche nach Teilstring
  Dim rFinde1 As Range, rSuche1 As Range         ' das ist eine einfache Variablendeklaration
  Dim strFirst1 As String
  Dim lngReihe1 As Long, lngLetzte1, lngLetzte2 As Long
  Dim I1 As Integer

With Workbook (QName) 'Name des ZielWorkbook aus dem die Werte zum Suchen kommen (In meinem Text ZWB)
  With Sheets(Ort31)  'Name des ZielWorksheet (Zielsheet)

  lngLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count) ' letzte volle Zeile in Sheet Zielsheet ermitteln, da stehen die Suchwerte in den Spalten von Spalte B
  End With

With Workbook (Suchliste) ' QuellWorkbook mit allen EQ (QWB)
  With Sheets(Suchsheet)  '(Quellsheet)mit allen EQ
  lngLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count) ' letzte volle Zeile in Sheet Quellsheet ermitteln, da stehen die Suchwerte in den Spalten von Spalte A
  End With

  Set rFinde1 = Sheets(Suchliste & Suchsheet).Range("A2:A" & LngLetzte2) ' In Spalte A Sheet Suchsheet soll gesucht werden, da stehen die zu vergleichenden Werte
  With Sheets(QName & "\" &  Ort 31)
    For I1 = 1 To lngLetzte1 ' Suchschleife, da ja mehr als nur ein Suchwert
       Set rSuche1 = rFinde1.Find(what:=.Cells(I1, 2), lookat:=xlWhole) ' .cells.. ist der jeweilige Suchwert
          If Not rSuche1 Is Nothing Then ' wenn, was gefunden wurde
             strFirst1 = rSuche1.Address ' merke dir die erste gefundene Zelle (weil können ja mehr sein)
             Do ' weiter Schleife, um die anderen gleichen zu finden
               lngReihe1 = rSuche1.Row ' wir merken uns die Zeile wo in Ort31 der Suchstring steht
               
              
              Sheets(Ort31).Range("A" & lngReihe1) = "Aktiv" 'Ich glaube das ist der Richtige String
              'Sheets(ort31).Range("A" & I1) = "Aktiv"       ' Der hier ist die Alternative, falls der oben nicht richtig ist.        
               
               Set rSuche1 = rFinde1.FindNext(rSuche1) ' wir suchen den nächsten, gleichen Suchstring
             Loop While Not rSuche1 Is Nothing And rSuche1.Address <> strFirst1 'das tun wir solange, bis wir wieder bei der ersten Adresse sind und somit alle gefunden wurden.
          End If
      Next I1
  End With

 

 

 

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
08.07.2021 11:26:37 Bernd
NotSolved
08.07.2021 12:51:52 Gast74527
NotSolved
Rot schnellere Möglichkeit nach Wert in 2 Tabellen zu Suchen?
08.07.2021 15:08:45 Bernd
NotSolved
08.07.2021 16:19:33 Bernd
NotSolved
08.07.2021 17:02:57 Mase
NotSolved
08.07.2021 17:50:39 Bernd
NotSolved
08.07.2021 16:36:22 Gast70993
NotSolved
08.07.2021 18:02:01 Bernd
NotSolved