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

Schleife um Zeilen zu kopieren, bei der 2 Bedingun

Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 14:44:05
Fabian
Hallo zusammen,
ich habe folgendes Problem:
Wir haben ein Tabellenblatt A mit Daten. Jeder Zeile ist eine bestimmte Sequenz zugeteilt. Bspw. 7 sowie 740-1110. Nun möchte ich, dass mir VBA das gesamte Tabellenblatt Zeile für Zeile durchgeht und mir jedes Mal, wenn in Spalte "Z" 7 steht und in Spalte AA ein Wert zwischen 740 und 1110 steht, die Zeile kopiert und in Tabellenblatt B ab Spalte 10 einfügt.
Ist das ohne große Umstände möglich?
Vielen Dank für eure Hilfe!
Grüße,
Fabian

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

Betreff
Datum
Anwender
Anzeige
AW: Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 15:00:33
ChrisL
Hi Fabian
Willst du nicht einfach den Autofilter setzen, Kopieren, Einfügen, Autofilter wieder aufheben.
Bei vielen Daten ist dies sicherlich schneller als Zeile für Zeile. Zudem müsste sich der Vorgang mit dem Makrorekorder aufzeichnen lassen.
cu
Chris
AW: Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 15:12:15
Daniel
es wird noch schneller, wenn man vor dem Filtern nach Spalte A und Spalte Z sortiert, so dass die zu zu kopierenden Zeilen möglichst lückenlos zusammenstehen.
Gruß Daniel
Spalte 10 oder Zeile 10?
29.09.2016 15:04:26
KlausF
Moin Fabian,
meinst Du wirklich: in Tabellenblatt B ab Spalte 10 einfügen (= Spalte "J")?
Das würde bedeuten, dass die Zeile nur von Spalte J bis Spaltenende kopiert wird.
Oder meinst Du: die gesamte Zeile in Tabellenblatt B ab Zeile 10 einfügen?
Gruß
Klaus
Anzeige
AW: Spalte 10 oder Zeile 10?
29.09.2016 15:36:54
KlausF
Hallo Fabian,
https://www.herber.de/bbs/user/108504.xls
Gruß
Klaus
Upps. Ich sehe gerade, es gibt schon eine Lösung.
Naja, dann sind es jetzt zwei ...
AW: Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 15:06:29
Werner
Hallo Fabian,
das würde ich persönlich mit dem Autofilter realisieren. Zunächst Spalte A nach 7 filtern, dann Spalte Z nach >=740 und Je nach Zeilenanzahl kann das mit einer Schleife, die sämtliche Zeilen abklappert, ganz schön zäh werden. Da ist der Filter wesentlich schneller.
Zudem noch eine Frage: Sicher, dass die Daten dann nach Blatt B Spalte 10 kopiert werden sollen, oder meinst du ab Zeile 10?
Wenn möglich lade doch mal eine Beispieldatei mit ein paar Spieldaten und ein paar händisch eingetragenen Daten auf Blatt B, die dein Wunschergebnis zeigen, hier hoch.
Gruß Werner
Anzeige
AW: Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 15:14:32
UweD
HAllo
ich denke du meinst ab Spalte 10 Zeile 10 (sonst macht das kopieren einer ganzen Zeile keinen Sinn)
Dann ginge das z.B. so..
Sub djsdsd()
Dim Tb1, Tb2, Zelle, LR2 As Long
Set Tb2 = Sheets("TabelleB")
With Sheets("TabelleA")
If WorksheetFunction.CountA(Columns("Z")) > 0 Then
For Each Zelle In Columns("Z").Cells.SpecialCells(xlCellTypeConstants, 3)
If Zelle = 7 And Zelle.Offset(0, 1) >= 740 And Zelle.Offset(0, 1) 
LG UweD
AW: Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 15:19:40
UweD
Hab noch .Punkte vergessen
Sub djsdsd()
    Dim Tb1, Tb2, Zelle, LR2 As Long
    Set Tb2 = Sheets("TabelleB")
    
    With Sheets("TabelleA")
        If WorksheetFunction.CountA(.Columns("Z")) = 0 Then Exit Sub
        For Each Zelle In .Columns("Z").Cells.SpecialCells(xlCellTypeConstants, 3)
            If Zelle = 7 And Zelle.Offset(0, 1) >= 740 And Zelle.Offset(0, 1) <= 1110 Then
                LR2 = Tb2.Cells(Tb2.Rows.Count, "Z").End(xlUp).Row + 1
                LR2 = WorksheetFunction.Max(LR2, 10) 'Erst ab Zeile 10 
                .Rows(Zelle.Row).Copy Tb2.Rows(LR2)
            End If
        Next
    End With
End Sub
LG UweD
Anzeige
AW: Schleife um Zeilen zu kopieren, bei der 2 Bedingun
29.09.2016 15:47:03
Daniel
Hi
ja schon, aber beim arbeiten mit Excel sollte man Schleifen vermeiden.
Entweder, wie schon beschrieben mit Autofilter filtern und dann kopieren, in gefilterten Zellen werden nur die sichtbaren Zeilen kopiert.
Ich bevorzuge per Makro die Methode, per Formel die zu kopierenden Zeilen zu markieren und dann über die .SpecialCells-Funktion zu selektieren und zu kopieren.
Das hat den Vorteil, dass man besser kontrollieren kann, ob auch die richtigen Zeilen kopiert werden, wenn man das Programm nach einfügen der Formel mal anhält.
Sub KopierenMitBedingung()
With Sheets("A").UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(AND(RC26=7,RC27>=740,RC27 0 Then
Intersect(.SpecialCells(xlCellTypeConstants, 1).EntireRow, _
Range(.Worksheet.Columns(1), .Offset(0, -1))).Copy
Sheets("B").Cells(10, 1).PasteSpecial xlPasteAll
End If
.ClearContents
End With
End With
End Sub
Auch hier gilt, bei grössern Datenmengen empfielt es sich, die Liste vor dem Kopieren zu sortieren (hier am einfachsten nach der Hilfsspalte), so dass alle zu kopierenden Zeilen direkt untereinander stehen.
Dann geht das Kopieren schneller und auch bei größten Datenmengen problemlos.
Gruß Daniel
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige