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

Forumthread: doppelte for schleife

doppelte for schleife
29.11.2019 06:49:11
Jonas17
Hi, ich habe folgendes Problem. Ich würde gerne eine Spalte durchlaufen und Werte kleiner 0 *2 rechnen. Sobald diese Spalte durchlaufen ist soll es 5 Spalten weiter wechseln und immer so weiter.
Momentan probiere ich es mit diesem Code:
Sub a()
Dim xEnde As Long,qw As Long
With Worksheets("sheet(1)")
For qw = 12 To 67 Step 5                                                                         _
xEnde = Worksheets("sheet(1)").Range("A65536").End(xlUp).Row
For l = xEnde To 2 Step -1
Cells(xEnde, 17).Select
If Cells(xEnde, 17).Value 
Die Spalte wird super durchlaufen und es funktioniert nur der Sprung in die nächste Spalte klappt nicht. Kann mir jemand helfen und mir meinen Fehler erklären?
Vielen Dank und schon mal ein schönes Wochenende!
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte for schleife
29.11.2019 07:06:56
Torsten
Hallo,
du musst fuer die Spalte dann auch deine Variable qw verwenden. Probiers mal so, wenn du in Spalte 12 starten willst:

Sub a()
Dim xEnde As Long, qw As Long, i As Long
With Sheets("sheet(1)")
For qw = 12 To 67 Step 5
xEnde = .Range("A65536").End(xlUp).Row
For i = xEnde To 2 Step -1
If .Cells(i, qw).Value 

Gruss Torsten
Anzeige
AW: doppelte for schleife
29.11.2019 07:29:35
Torsten
Hallo nochmals,
noch ein paar Punkte zusaetzlich zu erklaeren:
1. Wenn du die With Anweisung verwendest, brauchst due das Worksheet nicht immer wieder (innerhalb des With) zu referenzieren. Einfach da, wo normalerweise referenziert wird eine Punkt setzen und mit der Anweisung weitermachen (siehe mein Code). Dann am Ende auch das End With nicht vergessen.
2. Wie in meinem anderen Post bemerkt, musst du auch, damit die Spalten weitergezaehlt werden (also weitergesprungen wird), deine Variable qw im Code verwenden. Du hast Spalte 17 innerhalb der For Schleife verwendet. Also wird auch bis zum Schleifenende immer in Spalte 17 gearbeitet. Egal, ob du qw hochzaehlst oder nicht.
3. Verwende immer "Option Explicit" am Anfang eines Codes. Dann wirst du schon vor dem anlaufen des Codes auf Fehler im Code hingewiesen. Habe ich leider vergessen, dir mitzukopieren. Dann kannst du auch nicht vergessen, eine Variable (in deinem Fall l) zu deklarieren.
Hoffe, das traegt etwas zum lernen bei.
Gruss nochmals
Anzeige
AW: doppelte for schleife
29.11.2019 08:11:31
Jonas17
Guten Morgen Torsten, erstmal danke für die Lösung funktioniert super, nur irgendwie führt es nicht mehr bis Spalte 67 aus, er hört bei 62 auf. Weißt du woran das liegen könnte?
Danke nochmal für die Super Erklärung, es trägt definitiv zum Lernen bei. Hab wieder was dazugelernt!
Wünsche dir ein schönes Wochenende!
Anzeige
AW: doppelte for schleife
29.11.2019 08:15:33
Jonas17
EDIT:
Hab meinen Fehler gefunden, es hat eine Spalte gefehlt.
AW: doppelte for schleife
29.11.2019 08:17:49
Torsten
War schon perplex, weils bei mir funktioniert hat. Wenn die Spalte gefehlt hat, hat er zwar in der 67. Spalte gesucht, aber nichts gefunden.
Dir auch ein schoenes WE
;
Anzeige
Anzeige

Infobox / Tutorial

Doppelte For Schleife in Excel VBA richtig anwenden


Schritt-für-Schritt-Anleitung

Um eine doppelte For Schleife in Excel VBA korrekt zu implementieren, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
  3. Schreibe den Code:

    • Verwende den folgenden Code als Basis:
      Sub a()
      Dim xEnde As Long, qw As Long, i As Long
      With Worksheets("Sheet1")
         For qw = 12 To 67 Step 5
             xEnde = .Range("A65536").End(xlUp).Row
             For i = xEnde To 2 Step -1
                 If .Cells(i, qw).Value < 0 Then
                     .Cells(i, qw).Value = .Cells(i, qw).Value * 2
                 End If
             Next i
         Next qw
      End With
      End Sub
  4. Führe den Code aus:

    • Du kannst den Code durch Drücken von F5 ausführen.

Häufige Fehler und Lösungen

  • Problem: Die Schleife springt nicht zur nächsten Spalte.

    • Lösung: Stelle sicher, dass du die Variable qw zur Referenzierung der Spalten verwendest, anstatt eine feste Zahl wie 17 zu verwenden.
  • Problem: Die Schleife führt nicht bis zur letzten Spalte (z.B. 67) aus.

    • Lösung: Überprüfe, ob alle erforderlichen Spalten vorhanden sind. Wenn eine Spalte fehlt, wird die Schleife möglicherweise vorzeitig beendet.
  • Problem: Fehlerhafte Variablendeklaration.

    • Lösung: Füge Option Explicit am Anfang deines Codes hinzu, um sicherzustellen, dass alle Variablen deklariert sind.

Alternative Methoden

Wenn du die doppelte Schleife nicht mit VBA umsetzen möchtest, kannst du auch Excel-Formeln verwenden, um ähnliche Ergebnisse zu erzielen. Eine Möglichkeit ist die Verwendung von WENN in Kombination mit VERWEIS, um Werte zu verdoppeln, die kleiner als 0 sind.

Beispiel:

=WENN(A1<0; A1*2; A1)

Diese Formel kann in eine gesamte Spalte kopiert werden, um alle negativen Werte zu verdoppeln.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das du anpassen kannst:

Sub BeispielDoppelteForSchleife()
    Dim xEnde As Long, qw As Long, i As Long
    With Worksheets("Daten")
        For qw = 1 To 10 Step 2 ' Durchläuft Spalten 1, 3, 5, ...
            xEnde = .Cells(.Rows.Count, 1).End(xlUp).Row
            For i = 1 To xEnde
                If .Cells(i, qw).Value < 0 Then
                    .Cells(i, qw).Value = .Cells(i, qw).Value * 2
                End If
            Next i
        Next qw
    End With
End Sub

Dieses Beispiel zeigt, wie du in einer doppelten Schleife durch Spalten und Zeilen iterieren kannst, um spezifische Bedingungen zu überprüfen und Werte zu ändern.


Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind und um mögliche Fehler zu vermeiden.
  • Verwende die With-Anweisung, um den Code lesbarer zu machen und die Performance zu verbessern.
  • Experimentiere mit der Schrittweite in deiner doppel Schleife (z.B. Step 2), um nur bestimmte Spalten zu bearbeiten.

FAQ: Häufige Fragen

1. Was ist eine doppelte For Schleife?
Eine doppelte For Schleife ermöglicht es dir, zwei Dimensionen (z.B. Zeilen und Spalten) gleichzeitig zu durchlaufen, was besonders nützlich ist, wenn du mit Matrizen oder Tabellen arbeitest.

2. Wie kann ich sicherstellen, dass mein Code effizient ist?
Vermeide unnötige Referenzen auf das Arbeitsblatt innerhalb deiner Schleifen. Verwende die With-Anweisung, um die Lesbarkeit und Effizienz zu erhöhen.

3. Was mache ich, wenn mein Code nicht funktioniert?
Überprüfe deine Variablen und stelle sicher, dass du die richtigen Referenzen verwendest. Nutze Debug.Print, um den aktuellen Status deiner Schleifen zu überprüfen.

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