Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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

VBA Schneller Zeile finden als mit do loop

VBA Schneller Zeile finden als mit do loop
12.02.2014 07:46:25
Andre
Moin,
ich habe mir einen Code geschrieben, der mir eindeutig zu lange dauert und möchte diesen mit Excel Funktionen beschleunigen hat da jemand ein Tipp?
Hier mein Code:

Do
If ExcelWkb.Application.ActiveSheet.Cells(k, Ust_Zeile).Text = Auswertung(1) And _
ExcelWkb.Application.ActiveSheet.Cells(k, Adresse_Zeile).Text = Auswertung(3) Then
Exit Do
End If
k = k + 1
Loop Until ExcelWkb.Application.ActiveSheet.Cells(k, Satz_Zeile) = ""

Ich öffne eine andere Excel Tabelle mit mehr als 5000 Einträge suche mir raus, wo die beiden Kennungen sind und merke mir die Zeile, damit ich diese dann weiter bearbeiten kann.
Vielen Dank
LG André

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schneller Zeile finden als mit do loop
12.02.2014 07:51:36
hary
Moin
Wenn die zu suchenden Werte einmalig pro Spalte sind, kannst du es mit Application.Match machen.
gruss hary

AW: VBA Schneller Zeile finden als mit do loop
12.02.2014 08:05:39
Andre
Danke für die schnelle Antwort, aber das hätte ich wohl dazu schreiben müssen. Nur die Kombination beider ist eindeutig. Die Unterstation und die Adresse kommen leider mehrfach vor.
Dennoch Danke

AW: VBA Schneller Zeile finden als mit do loop
12.02.2014 08:06:28
Andre
achja noch offen (sry)

AW:vlt. mit Find
12.02.2014 08:35:47
hary
Moin Andre
Versuch mal mit find.
Musst du aber noch anpassen, ohne Bsp.-Mappe kann man nicht testen.
Hier wird SpalteA und SpalteB verglichen.
Dim c As Object
Dim firstAddress As String
With Sheets("Tabelle1").Columns(1)
Set c = .Find(Auswertung(1), LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If c.Offset(, 1) = Auswertung(3) Then
MsgBox c.Row
Exit Do
End If
Set c = .FindNext(c)
If c Is Nothing Then Exit Sub
Loop While c.Address  firstAddress
End If
End With

gruss hary

Anzeige
AW: AW:vlt. mit Find
12.02.2014 09:42:43
Andre
Moin Harry,
an sich eine gute Idee.
Anbei noch mal ne Beispielliste, wie meine Aussieht. Ich muss in Spalte B und C jeweils das drin haben, was bei mir in meinem Array Auswertung(1) und Auswertung(3) ist.
Wenn ich deinen Code richtig vestanden habe, suchst du den ersten Wert, kontrollierst ihn und wenn er falsch ist springst du einfach zum nächsten und gibst auf, wenn wieder der erste Wert erreicht ist?
https://www.herber.de/bbs/user/89235.xlsx
Vielen dank bisher schon mal :D

AW: AW:vlt. mit Find
12.02.2014 09:43:50
Andre
Dieser blöde noch offen Haken ;)

Anzeige
AW: AW:vlt. mit Find
12.02.2014 09:57:59
hary
Moin
Versuch es mal so.
Dim c As Object
Dim firstAddress As String
With Sheets("Tabelle1").Columns(3) 'suchen in SpalteC
Set c = .Find(Auswertung(3), LookIn:=xlValues) 'Auswertung(3)steht in SpalteC
If Not c Is Nothing Then
firstAddress = c.Address
Do
If c.Offset(, -1) = Auswertung(1) Then 'wenn SpalteB = Auswertung(1)
MsgBox c.Row 'Ausgabe der Zeilennummer
Exit Do
End If
Set c = .FindNext(c)
If c Is Nothing Then Exit Sub
Loop While c.Address  firstAddress
End If
End With

gruss hary

AW: AW:vlt. mit Find
12.02.2014 10:13:41
Andre
Hey,
hat funktioniert.
vielen vielen lieben dank :D
Anzeige

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige