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

VBA - Werte in mehrere spallten und zeilen suchen

VBA - Werte in mehrere spallten und zeilen suchen
03.04.2019 11:01:29
Mihi
Hallo liebe Leute,
mein Problem lautet wie folgt:
In einer Tabelle mit ca. 10.000 Zeilen und 26 Spalten, soll jede einzelne Zeile nach bestimmten Wert-Kombinationen durchsucht werden, falls z.B. in Zeile 3, Spalte C ein "NEIN" und in Spalte F ein "JA" steht soll die komplette Zeile in Tabellenblatt "Tabelle2" verschoben werden.
Oder wenn z.B. in Zeile 4, Spalte A ein "erledigt", in Spalte B ein "JA" und in Spalte Z ein "abgeschlossen" steht soll die komplette Zeile in Tabellenblatt "Tabelle3" verschoben werden.
Da ich leider im Archiv/Forum nur Makros finde die in einer Spalte suchen und nicht wie bei mir benötigt in 2 oder mehreren Spalten komme ich leider nicht weiter.
Ich wäre sehr dankbar wenn mir diesbezüglich irgendjemand weiterhelfen könnte, da ich mir seit tagen an dieser Sache die Zähne ausbeiße.
Mit freundlichen Grüßen
mihi

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

Betreff
Datum
Anwender
Anzeige
AW: VBA - Werte in mehrere spallten und zeilen suchen
03.04.2019 11:34:55
Werner
Hallo,
was mich bei deiner Beschreibung stört ist das z.B.
Von wievielen verschiedenen Prüfungen sprechen wir denn?
So wie sich das anhört, sollte das mit VBA über den Autofilter realiesierbar sein.
Lad doch mal eine Beispielmappe hoch mit ein paar Spieldaten.
Gruß Werner
AW: VBA - Werte in mehrere spallten und zeilen suchen
04.04.2019 10:36:08
Mihi
Hallo Werener,
das bedeutet konkret das die Schleife nicht funktioniert, sondern der Button der das Makro ausführt mehrmals betätigt werden muss, damit alle Einträge die die Bedingungen erfüllen in das andere Tabellenbaltt springen.
Wenn ich den Befehl "Sheets(ws1).Range("A" & i).EntireRow.Delete" aus dem Code entferne funktioniert wieder alles tadellos.
Da es aber wichtig ist das beim kopieren die Einträge aus WKS1 gelöscht werden würde ich nun Hilfe benötigen.
LG
MIHI
Anzeige
AW: VBA - Werte in mehrere spallten und zeilen suchen
04.04.2019 10:59:13
Werner
Hallo,
Schleifen zum Löschen müssen immer von unten nach oben laufen.
With Sheets(ws1)
For i = lngLast1 To 1 Step - 1
If .Cells(i, 19) = "in Beschwerde" Or .Cells(i, 19) = "durchsetzbar" Then
If .Cells(i, 23) = "Aberkennung" Then
lngLast2 = Sheets(ws2).Cells(Rows.Count, 1).End(xlUp).Row
.Range("A" & i).EntireRow.Copy Sheets(ws2).Cells(lngLast2 + 1, 1)
.Range("A" & i).EntireRow.Delete
End If
End If
Next
End With
Das hat dann hier aber zur Folge, daß die Sortierung der Daten im Zielblatt "umgedreht" ist.
Gruß Werner
AW: VBA - Werte in mehrere spallten und zeilen suchen
03.04.2019 12:04:36
Torsten
Hallo Mihi,
mal als Ansatz fuer deine beiden Beispiele:
Sub kopieren()
Dim i As Long, lngLast1 As Long, lngLast2 As Long, lngLast3 As Long
Dim ws1 As String, ws2 As String, ws3 As String
ws1 = "Tabelle1"
ws2 = "Tabelle2"
ws3 = "Tabelle3"
lngLast1 = Sheets(ws1).Cells(Rows.Count, 1).End(xlUp).Row
With Sheets(ws1)
For i = 1 To lngLast1
If .Cells(i, 3) = "NEIN" Then
If .Cells(i, 6) = "JA" Then
lngLast2 = Sheets(ws2).Cells(Rows.Count, 1).End(xlUp).Row
.Range("A" & i).EntireRow.Copy Sheets(ws2).Cells(lngLast2 + 1, 1)
End If
End If
Next
End With
With Sheets(ws1)
For i = 1 To lngLast1
If .Cells(i, 1) = "erledigt" Then
If .Cells(i, 2) = "JA" Then
If .Cells(i, 26) = "abgeschlossen" Then
lngLast3 = Sheets(ws3).Cells(Rows.Count, 1).End(xlUp).Row
.Range("A" & i).EntireRow.Copy Sheets(ws3).Cells(lngLast3 + 1, 1)
End If
End If
End If
Next
End With
End Sub
Gruss Torsten
Anzeige
AW: VBA - Werte in mehrere spallten und zeilen suchen
04.04.2019 09:18:07
Mihi
Hallo Torsten,
dein Code funktioniert nur hab ich nun das Problem das wenn ich
With Sheets(ws1)
For i = 1 To lngLast1
If .Cells(i, 19) = "in Beschwerde" Or .Cells(i, 19) = "durchsetzbar" Then
If .Cells(i, 23) = "Aberkennung" Then
lngLast2 = Sheets(ws2).Cells(Rows.Count, 1).End(xlUp).Row
.Range("A" & i).EntireRow.Copy Sheets(ws2).Cells(lngLast2 + 1, 1)
.Range("A" & i).EntireRow.Delete
            End If
End If
Next
End With
da ja die Zeile im ersten Tabellenblatt gelöscht gehört und ich
den Code mit .Range("A" & i).EntireRow.Delete erweitere, dieser Code leider nicht mehr richtig funktioniert.
Mit freundlichen Grüßen
MIhi
Anzeige
Nicht mehr richtig funktionier...
04.04.2019 10:05:24
Werner
Hallo,
...bedeutet dann was?
So ist das eine ziemlich nichtssagende Aussage.
Gruß Werner
AW: Nicht mehr richtig funktionier...
04.04.2019 10:52:29
Daniel
Ich gehe mal davon aus, dass Zeilen nach dem Löschen übersprungen werden, weil durch das Löschen der nächste Datensatz nach oben rutscht, i aber schon auf die nächste Zeile verweist.
Lösung: Kehre die For Schleife um und gehe von unten nach oben:
For i = lngLast1 to 1 step -1
Gruß
Daniel
AW: VBA - Werte in mehrere spallten und zeilen suchen
03.04.2019 12:11:07
Mihi
Hallo Werner, hier die Datei um die es sich handelt:
https://www.herber.de/bbs/user/128884.xlsb
Es handelt sich insgesamt um 10 Abfragen pro Zeile mit jeweils 2-3 Wertkombinationen aus verschiedenen Spalten.
Danke, Torsten werde es gleich mal ausprobieren.
Anzeige

394 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige