Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalte nach Wert durchsuchen

Spalte nach Wert durchsuchen
23.08.2013 17:25:52
Ann
Hi,
ich hab vielleicht ne blöde Frage... :)
Und zwar will ich mit Hilfe von VBA eine Spalte durchsuchen. Interessant sind für mich die Zellen mit einem Wert ungleich 3 (es gibt die Werte 0 bis 4). Ist der Wert ungleich 3 muss noch der Wert eine Zeile drüber gleich 3 sein, um weiterzuarbeiten. Ich hab das jetzt mit einer Schleife gelöst, aber da das an die 70000 Zeilen sind, arbeitet mein Programm relativ lange :(
Kann ich das Problem vielleicht anders lösen, z.B. mit dem Befehl Find (oder arbeitet die Funktion auch so wie eine Schleife)?
a = Sheets(1).Cells(Rows.Count, 16).End(xlUp).Row
For Zeile = 2 To a
Wert = Sheets(1).Cells(Zeile, 16)
If Wert 3 Then
If Sheets(1).Cells(Zeile - 1, 16) = 3 Then
If Wert = 0 Then
...
ElseIf Wert = 4 Or 2 Then
...
End If
End If
End If
Next Zeile
Vielen Dank für eure Hilfe!!!
Ann

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte nach Wert durchsuchen
23.08.2013 18:43:20
ChrisL
Hi Ann
Du kannst es ja einmal ausprobieren, aber ich denke nicht, dass du mit Find viel Geschwindigkeit rausholst.
Ich würde mal mit ScreenUpdating und Calculation ausschalten beginnen. Weiter den Code optimieren, der bei Erfüllung des Kriteriums ausgeführt wird (sofern es da noch etwas zu optimieren gibt).
Aber vorallem denke ich kommt es auf die Ausgangslage an. Wenn du wenig 3 und viel Rest hast, ist es vermutlich schneller nach den Dreien zu suchen und den Code umzudrehen. Wenn das Kriterium generell selten erfüllt ist, kannst du u.U. die Schleife vorzeitig verlassen (z.B. mit CountIf oder Match schauen ob überhaupt noch was da ist).
Überhaupt frage ich mich wie es zu so einer Aufgabe kommen kann. Manchmal lohnt es sich ein Projekt grundlegend zu überdenken und z.B. die Datenstruktur zu ändern.
Für die Übersichtlichkeit wäre übrigens in meinen Augen Select Case schöner. Rows.Count ist übrigens nicht referenziert d.h. Sheets(1).Rows.Count oder noch besser With Sheets(1)...End With
cu
Chris

Anzeige
AW: Spalte nach Wert durchsuchen
23.08.2013 22:01:35
Gerd
Hallo Ann!
Sub a()
Dim X As Range, Y As Range, Z As Range
With Sheets(1).Columns(16)
Set Z = .Find(3, after:=.Cells(1), LookIn:=xlValues, lookat:=xlWhole)
Set X = Z.Resize(.Cells(.Rows.Count).End(xlUp).Row - Z.Row + 1).ColumnDifferences( _
Comparison:=Z)
For Each Y In X.Areas
Select Case Y.Cells(1)
Case 2, 4: Y.Cells(1).Offset(0, 1) = 24
Case 0: Y.Cells(1).Offset(0, 1) = 0
End Select
Next
End With
End Sub
Gruß Gerd

AW: Spalte nach Wert durchsuchen
27.08.2013 14:55:50
Ann
Hallo,
ich bin grad dabei meinen Code mit euren Ideen zu überarbeiten. Ich möchte es jetzt so machen, dass er mit "find" die erste 3 sucht und ab da dann die erste Zahl ungleich 3. Somit spar ich mir die Überprüfung eine Zeile drüber. Jetzt hab ich aber ein Problem mit dem Befehl Find:
With Sheets(1).Columns(16)
a = .Find(3).Row
b = .Find(Wert, After:=Cells(a, 16), LookIn:=xlValues)
Der Variablen "Wert" möchte ich die Zahlen 0, 2, 4 zuweisen. Ich weis nur leider nicht wie.
Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige