Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wie programmiere ich das effizienter

Wie programmiere ich das effizienter
13.06.2019 17:28:20
Daniel
Hallo liebe Experten
Erstmal Danke für euer Engagement und für alles was ich bisher von euch lernen durfte.
Ich wollte in dem File eigentlich in jeder Zeile nach einem Begriff suchen und wenn dieser vor kommt die Zeile in das Sheet Resutat kopieren.
Ich versuchte es mit der .Find funktion aber hatte alle möglichen fehler und hab nun diesen Workaround produziert. Wie mach ich das ganze effizienter?
https://www.herber.de/bbs/user/130370.xlsm

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie programmiere ich das effizienter
13.06.2019 17:43:13
onur
Und wo willst du suchen? Thema? Titel? Autor?
AW: Wie programmiere ich das effizienter
13.06.2019 17:57:50
Daniel
Hi
füge der Tabelle in der nächsten freien Spalte diese Formel hinzu (dh in Zelle N2 und dann nach unten kopieren:
=Wenn(ZählenWenn(A2:M2;Suche!$B$2);1;"")

diese Formel markiert alle Zeilen, in denen der Suchbegriff gefunden wurde, mit 1 und die anderen mit dem Text ""
als Code reicht dann folgendes, um die Zeilen mit 1 in Spalte N zu kopieren:
Sub Kopieren()
Sheets("Resultat").UsedRange.Offset(1, 0).Clear
With Sheets("Bilderbuch")
if Worksheetfunction.Sum(.Columns(14)) > 0 then
Intersect(.Range("A:M"), .columns(14).Specialcells(xlcelltypeformulas, 1).EntireRow).Copy _
Destination:=Sheets("Resultat").Cells(2, 1)
end if
End with
End Sub
ins Blatt Resultat solltest du in Zeile 1 die Überschriften eintragen.
um mit der Option "Zelle enthält Suchwert" zu suchen, musst du in B2 noch die Jokerzeichen mit eingeben: "*Suchbegriff*"
wenn du immer mit "enthält" suchen willst, machst du das in der Formel:
=Wenn(ZählenWenn(A2:M2;"*"&Suche!$B$2&"*");1;"")
Gruß Daniel
Anzeige
AW: Wie programmiere ich das effizienter
14.06.2019 09:16:31
Daniel
Hi Daniel
Vielen Dank für deine simple und clevere Lösung. Mach mich gleich mal dran das Intersect noch genauer zu verstehen.
Kann man die suche denn nicht über die .Find Methode des Range Objekts lösen? Ist das zu kompliziert?
lg
Dani
AW: Wie programmiere ich das effizienter
14.06.2019 09:52:00
Daniel
Hi
Intersect ist die Schnittmenge von zwei Zellbereichen.
Intersect(Range("1:1"), Range("A:A")) ergibt Range("A1")
das ganze geht sicherlich auch mit .FIND und in einer Schleife, wird aber deutlich länger im Code und langsamer in der Ausführung.
Außerdem wirst du bei VBA bescheiden nicht umhinkommen, deine Codes im Einzelstepmodus zu testen um die Fehler zu finden. Dabei sind Schleifen einfach lästig.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige