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

Zeile nach Kriterium kopieren

Zeile nach Kriterium kopieren
16.04.2015 14:57:36
Matthias
Hallo Wissende,
hab folgendes Makro, dieses funktionier auch soweit,
ich wollte es einwenig anpassen bekomme es aber nicht
so richtige hin.
Ich möchte in Zeile z.B. A1 eine die Buchstaben DK eingeben
und alle entsprechenden Zeilen von Tabelle 1 sollen in Tabelle 2
kopiert werden und zwar ab Zeile 21. Ist das möglich
Danke im Voraus.
Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim i As Long
With Tabelle3
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 1).Value = "DK" Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile nach Kriterium kopieren
16.04.2015 15:30:12
MCO

Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim cl As Range
n = 1
Application.ScreenUpdating = False
With Tabelle3
ZeileMax = .UsedRange.Rows.Count
For Each cl In .Range("A2:A" & ZeileMax) 'jede Zeile im Bereich
If cl.Value = "DK" Then
.Rows(cl.Row).Copy
Tabelle2.Rows(n).PasteSpecial (xlValues) 'nur Werte kopieren, keine Formeln
n = n + 1
End If
Next cl
End With
Application.CutCopyMode = False
Tabelle2.Select
End Sub

'Gruß, MCO

AW: Zeile nach Kriterium kopieren
16.04.2015 15:37:58
Michael
Hi Wissenssuchender,
Du kannst ja in der Destination rows(n+21) schreiben, X rechnet hier brav mit.
Bitte schreibe vor die erste SUB den Text: option explicit
Das sorgt dafür, daß Du Variablen richtig deklarieren mußt, dann DIMst Du nicht i und rechnest (ohne Fehlermeldung) mit n.
Meinst Du so:
Dim vergleichswert as string
vergleichswert = range("A1").value
' bis hierher vor der Schleife und dann If ... "DK" durch vergleichswert ersetzen:
If .Cells(Zeile, 1).Value = vergleichswert Then
' usw.
Schöne Grüße,
Michael

Anzeige
AW: Zeile nach Kriterium kopieren
16.04.2015 16:01:13
Matthias
Hallo
erstmal danke das mit der Zeile ab 21 funktioniert
aber leider bekomme ich nun einen Fehler
-Fehler beim Kompilieren Variable nicht definiert
Danke
Option Explicit
Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
Dim i As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
Dim vergleichswert As String
vergleichswert = Range("A1").Value
If .Cells(Zeile, 1).Value = vergleichswert Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n + 21)
n = n + 1
End If
Next Zeile
End With
End Sub

Anzeige
AW: Zeile nach Kriterium kopieren
16.04.2015 16:26:39
Matthias
Hallo,
kann mir jemand helfen

genau das meine ich
16.04.2015 16:34:31
Michael
Hi Matthias,
Du hast mich falsch verstanden: das DIM und die Zuweisung des Vergleichswerts VOR die Schleife; ich kopiers nochmal von oben rein:

Option Explicit
Sub BedingteKopieZeilen()
Dim Zeile As Long
Dim ZeileMax As Long
' Dim i As Long              **** hier war *i* definiert! ******
Dim n As Long                ' Du benutzt aber *n*
Dim vergleichswert As String
vergleichswert = Range("A1").Value
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
Dim vergleichswert As String
vergleichswert = Range("A1").Value
If .Cells(Zeile, 1).Value = vergleichswert Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n + 21)
n = n + 1
End If
Next Zeile
End With
End Sub
So müßte es gehen.
Schöne Grüße,
Michael

Anzeige
AW: genau das meine ich
16.04.2015 16:42:59
Matthias
Hallo Michael,
funktioniert leider nicht bekomme die Fehlermeldung
Fehler beim Komplilieren
Mehrfachdeklaration im aktuellen Gültigkeitsbereich
Danke im Voraus

Sorry
16.04.2015 16:48:56
Michael
Mensch, wenn man keine Datei zum Testen hat:
Nachdem ich das *vor* die Schleife gepackt hab, muß es natürlich *in* der Schleife raus.
Also lösche bitte die zwei Codezeilen, die nach dem For folgen:
Dim bla
und
vergleichswert bla
Gruß,
Michael

AW: Sorry
16.04.2015 17:01:25
Matthias
Hallo Michael,
funktioniert super
vielen Dank.
Matthias

Ok.
16.04.2015 17:09:06
Michael
Hallo Matthias,
dann bin ich ja beruhigt.
Danke für die Rückmeldung!
Das noch: Werner hat natürlich Recht damit, n gleich auf den passenden Wert zu setzen. Ich hab's allerdings deshalb mit der Addition gemacht, weil man manchmal Werte ja erst während der Laufzeit kennt - und dann ist die Addition von evtl. mehreren Werten/Variablen ganz nützlich.
Happy Exceling,
Michael

Anzeige
AW: Zeile nach Kriterium kopieren
16.04.2015 16:38:00
Werner
Hallo Matthias,
Dim n As Long ?
Und warum gehst du den Umweg
Destinationen:=Tabelle2.Rows(n + 21)
Wenn du weist, dass du ab Zeile 22 einfügen willst dann kannst du am Anfang ja gleich der Variablen n den Wert 22 zuweisen.
n = 22
Werner

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige