Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Richtung der Suche der Find-Funktion ändern

Forumthread: Richtung der Suche der Find-Funktion ändern

Richtung der Suche der Find-Funktion ändern
20.06.2025 17:25:35
Andreas
Hallo zusammen,

ich hatte gestern eine Frage bzgl. der Find-Funktion gestellt (Betreff: Laufzeitfehler 91). Ich hatte sehr viele nützliche Hinweise (vor allem von Boris und Piet) bekommen, sodass meine Suchfunktion wie folgt aussieht und funktioniert:



Sub Firma()
Dim i As Integer
Dim rng As Range

For i = 6 To 20000
If ActiveSheet.Cells(i, 30).Value = "" Then
Set rng = Worksheets("Firmenstammdaten").Range("A1:A200").Find(what:=ActiveSheet.Cells(i, 2).Value, MatchCase:=False, LookAt:=xlWhole)
If Not rng Is Nothing Then
Worksheets("Bericht 1").Cells(i, 30).Value = rng.Offset(0, 1).Value
Worksheets("Bericht 1").Cells(i, 31).Value = "1"
Else
Worksheets("Bericht 1").Cells(i, 30).Value = ""
End If
End If
Next i
End Sub


Von Piet hatte ich den Tipp bekommen, dass es cleverer wäre, "in einem Range von 20.000 Zeilen die Daten von" A1:A200 zu suchen!
Das kann ich nachvollziehen. Meine Prozedur braucht wirklich, wirklich lang.

Ich scheitere aber an der Umsetzung. Wichtig ist, dass bei Übereinstimmung am Ende in dem worksheets "Bericht 1" (teilw. auch im Code noch als activeSheet bezeichnet ... das ändere ich noch) in der Spalte 30 die Werte aus der Tabelle "Firmenstammdaten, Spalte 2 eingetragen werden.

Ich bin nicht gut genug darin, die find-Funktion so umzubasteln, dass es klappt. Geht es überhaupt, die Find-Funktion hier zu benutzen?

Ich hoffe nochmal sehr auf Eure Hilfe. Vielen, vielen Dank fürs Gedanken machen!

Danke und einen schönen Freitag!

Andreas
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Richtung der Suche der Find-Funktion ändern
20.06.2025 18:19:48
Daniel
Hi

Wenn es um Geschwindigkeit geht bei großen Datenmengen geht, ist es immer sinnvoll erstmal zu sortieren.

Zum einen kannst du die Liste "Bericht 1" nach Spalte B sortieren, dann kannst du, wenn da der gleiche Wert drin steht wie in der Zeile drüber, einfach diese Werte übernehmen und musst nicht zeitaufwendig suchen.

Wenn du die Liste "Firmenstammdaten" sortiert, kannst du eine schnellere Suchmethode verwenden (in sortierten Daten kann man schneller suchen )
Leider beherrschen in Excel und VBA nur der VERGLEICH und der SVERWEIS bzw XVERWEIS diese schelle Suchmethode.
Und der zweite Nachteil ist, das man nicht angezeigt bekommt, ob man einen Exakten Treffer hat, das muss man selber prüfen.

Der Code wäre also:

With Sheets("Firmenstammdaten").UsedRange

.Sort Key1:=.Cells(1, 1), Order1:=xlascending, header:=xlyes
End with

With Sheets("Bericht 1").Range("6:20000")
.Sort Key1:=.Cells(2, 1), Order1:=xlascending, header:=xlno
.columns(30).FormulaR1C1 = "If(RC2=R[-1]C2;R[-1]C;If(vlookup(RC2;Firmenstammdaten!C1:C1;1;1)=RC2;vlookup(RC2;Firmenstammdaten!C1:C2;2;1);""""))"
.Columns(31).formulaR1C1 = "If(RC[-1]="""";"""";1)"
With.Colmuns(30).Resize(, 2)
.Formula = .Value
End with
End with


Es kommt nämlich noch ein weiteres Punkt hinzu: das Beschreiben einer Zelle mit einem Wert löst in Excel einige Aktionen im Hintergrund aus, die Zeit kosten.
Wenn man jetzt nicht nur eine Zelle sondern einen größeren Zellbllock in einem Schritt füllt, dann kann Excel diese Hintergrundaktionen für alle Zellen gemeinschaftlich ausführen, was wesentlich schneller ist, als sie für jede Zelle zu wiederholen.

Daher ist es vor allem für einen Programmiersnfänger sinnvoll noch viel mit Formeln und Excel-Menü-Funktionen zu arbeiten, wenn er schnelle Makros schreiben will.

Gruß Daniel

Anzeige
AW: Richtung der Suche der Find-Funktion ändern
20.06.2025 19:58:06
Piet
Hallo Andreas

meine Lösung findest du im alten Thread "Laufzeitfehler". Versehentlich dort hochgeladen. Sorry

mfg Piet
AW: Richtung der Suche der Find-Funktion ändern
21.06.2025 00:48:04
Uduuh
Hallo,
warum schreibst du in Bericht1!AD6:Adxx nicht einfach nen SVERWEIS() ??? Evtl mit WENNFEHLER() drumrum.

Gruß aus'm Pott
Udo
AW: Richtung der Suche der Find-Funktion ändern
25.06.2025 18:29:51
Andreas
Lieber Udo,

ich habe den Wald vor lauter Bäumen nicht gesehen. Sehr cool. Danke für deine Hilfe!

Viele Grüße, Andreas
Anzeige
AW: Richtung der Suche der Find-Funktion ändern
20.06.2025 20:03:21
Piet
Nachtrag wenn du in VBA fieter bist kannst du auch über SpecialCells dir die Adresse der leeren Zellen holen.
Dann must du die Adresse nach Blöcken splitten und jeden Block einzeln abarbeiten. Viel zu programmieren.
Ich hoffe das du den Code verstehst, und das der schneller arbeitet. Bin gespannt auf dein Ergebnis.

mfg Piet
Anzeige
AW: Richtung der Suche der Find-Funktion ändern
25.06.2025 10:22:16
Andreas
Lieber Piet,

leider bin ich erst gestern Abend dazu gekommen, mir deine Lösung anzuschauen. Entschuldigung dafür. Vielen, vielen lieben Dank zunächst ersteinmal für Deine Hilfe. Ich finde es so toll, dass Du und auch die anderen in diesem Forum so hilfsbereit seid. Wahnsinn.
Meine VBA-Fähigkeiten reichen tatsächlich nicht aus, um den ganzen Code auch mit deinen Kommentierungen vollkommen zu verstehen. Beim durchlaufen des Makros kommt die Meldung "Spalte AD ist nicht vollständig ausgefüllt!". Tatsächlich weiß ich nicht was deine Code an dieser Stelle prüft.
Vielleicht ist es auch müßig sich mit der Optimierung (hinsichtlich der Laufzeit) des Codes weiter zu beschäftigen. Ich bin davon ausgegangen, dass die Umstellung der Suchrichtung gar nicht so komplex ist. Als ich deinen Code dann gesehen habe, war ich zum einen ganz begeistert von deinen Fertigkeiten, zum anderen schaffe ich es scheinbar nicht den Code zum laufen zu bringen. Außerdem habe ich ja ein Funktionierendes Makro, was vielleicht ein wenig länger braucht. Auch die Idee von Uduuh mit dem SVERWEIS ist gut. Ich will nicht Deine Hilfe mehr als notwendig beanspruchen. Was denkst Du?

Ich Danke Dir auf jeden Fall noch einmal. Ich werde demnächst nochmal eine Anfrage einer weiteren Auswertung meine Tabelle in dieses Forum stellen. Dann hoffe ich ganz sehr, dass Du und die anderen mir wieder so toll zu Seite stehen.

DANKESCHÖN.

liebe Grüße, Andreas
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18