Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bereich Kopieren in Abhängigkeit v Wert

Bereich Kopieren in Abhängigkeit v Wert
20.03.2023 09:38:56
ewald

Hallo,

ich möchte gerne mittels einer Schleife in meinem Arbeitsblatt "Bankaufstellung" den Betrag in der Spalte E abfragen.
In allen Zeilen, in denen der Betrag positiv ist, möchte ich die Spalten E bis H in die Spalten A bis D kopieren.
Das Arbeitsblatt sieht so aus: https://www.herber.de/bbs/user/158333.xlsx

Folgendes habe ich mir überlegt, was aber leider nicht funktioniert:

Sub CopyRange()
    Sheets("Bankaufstellung").Select
 
   ' letzte Reihe finden
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
 
   ' Schleife
    For x = 2 To FinalRow
        ' Kopieren auf Basis Wert Spalte E
        ThisValue = Cells(x, 5).Value
        If ThisValue > 0 Then
        Sheets("Bankaufstellung").Range(Cells(x, 5), Cells(x, 8)).Copy
        Sheets("Bankaufstellung").Range(Cells(x, 1), Cells(x, 4)).Paste
    End If
   Next x
End Sub


Hat jemand eine Idee, was ich falsch gemacht habe?

Herzlichen Dank und schöne Grüße
Ewald

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich Kopieren in Abhängigkeit v Wert
20.03.2023 09:59:33
Mathias
Hallo Ewald,

in deinem Code sehe ich, dass du die Einträge von E bis H in die gleiche Zeile nach A bis D kopierst ohne diese aus E bis H zu löschen.
Wenn dies dein Ziel ist, dann kannst du lieber eine Formel verwenden.
=WENN($E2>0;E2;"")
Diese Formel schreibst du in A2 und dann kannst du diese über den gesamten Bereich in A bis D ziehen.

Liebe Grüße
Mathias


Anzeige
AW: Bereich Kopieren in Abhängigkeit v Wert
20.03.2023 10:07:31
ewald
Hallo Mathias,

herzlichen Dank für die schnelle Antwort.

Da hast Du gleich einen weiteren Denkfehler meinerseits offenbart. Ich möchte den jeweiligen Bereich von E bis H
ausschneiden und in A bis D einfügen.

Da der Baustein für ein größeres Skript bestimmt ist, sollte es in VBA laufen und nicht manuell in Excel ausgeführt werden.

Liebe Grüße
Ewald


Anzeige
AW: Bereich Kopieren in Abhängigkeit v Wert
20.03.2023 10:32:17
Mathias
Dann könnte ich dir gleich noch einen kleinen Denkfehler in der Zeile
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
aufzeigen. Dort hast du als Spalte 1 angegeben. Da die Spalte 1 leer ist (Bis auf die Überschrift) kommt da dann "1" raus.
Dadurch durchläuft deine Schleife nicht alle Angaben aus Spalte 5.

Ich hab mal einen Code zusammengeschrieben, der alle Einnahmen (also alles größer 0) in zu den Einnahmen verschiebt.
Option Explicit

Sub myCopy()
    Application.ScreenUpdating = False                                                          'ScreenUpdate wird wärend des Makros deaktiviert, da der Code dann schneller läuft.
    
    Dim mySheet As Worksheet
    Set mySheet = ThisWorkbook.Worksheets("Bankaufstellung")                                    'Speichert das entsprechende Tabellenblatt in eine Variable.
    
    Dim lngEinnahmen, lngAusgaben As Long
    lngEinnahmen = mySheet.Cells(mySheet.Rows.Count, 1).End(xlUp).Row + 1                       'Speichert die erste freie Zeile bei den Einnahmen in eine Variable.
    lngAusgaben = mySheet.Cells(mySheet.Rows.Count, 5).End(xlUp).Row                            'Speichert das Ende der Ausgaben in eine Variable.
    
    Dim i As Long
    For i = 2 To lngAusgaben                                                                    'Durchläuft die Ausgaben bis das Ende erreicht ist.
        If mySheet.Cells(i, 5).Value2 > 0 Then                                                  'Wenn der Wert größer 0 ist (also positiv) werden die Zeilen bis zum "End If" ausgeführt.
            Dim rngStart, rngZiel As Range
            Set rngStart = Range(mySheet.Cells(i, 5), mySheet.Cells(i, 8))                      'Setzt den Bereich der zu verschiebenden Daten.
            Set rngZiel = Range(mySheet.Cells(lngEinnahmen, 1), mySheet.Cells(lngEinnahmen, 4)) 'Setzt den Bereich wo die Daten hingeschoben werden sollen.
            rngStart.Cut rngZiel                                                                'Schiebt die Daten von dem angegebenen Startbereich in den angegebenen Zielbereich.
            lngEinnahmen = lngEinnahmen + 1                                                     'Da nun die Liste der Einnahmen verlängert wurde, ist die nächste freie Zeile eine Zeile tiefer.
        End If
    Next
    
    Application.ScreenUpdating = True                                                           'Am Ende des Makros wird ScreenUpdate wieder aktiviert.
End Sub
Falls du Probleme haben sollten den Rest deines Codes darum zu schreiben, dann helfen wir dir natürlich gerne weiter.

Liebe Grüße
Mathias


Anzeige
AW: Bereich Kopieren in Abhängigkeit v Wert
20.03.2023 10:49:44
ewald
Hallo Mathias,

das ist grandios!!! Vielen herzlichen Dank dafür. Genauso habe ich mir das vorgestellt.
Ganz herzlichen Dank auch für die Erläuterungen der einzelnen Schritte.
Die helfen mir, das Script einigermaßen zu verstehen und vor allem auch etwas dazu zu lernen.

Ich wünsche Dir eine schöne Woche!

Liebe Grüße
Ewald

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige