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

Forumthread: If / Else If Schleife in zwei For Schleifen

If / Else If Schleife in zwei For Schleifen
04.11.2019 10:01:02
Ralf
Hallo,
Ich habe ein Problem bei welchem ich in zwei verschachtelten For Schleifen eine If und Else If Schleife habe.
Ich lasse in der Ersten For Schleifen (Äußere Schleife) einen Zähler hochlaufen, den ich ein eine Zelle eintrage. Ich der Innerer For Schleife definiere ich einen Zellenbereich der Zeile für Zeile durchlaufen werden soll.
In der Inneren For Schleife steht eine Abfrage auf mehere Werte. Dieses funktioniert so lange ich nicht mit Elseif einen optionalen Werte anbiete. hier komme ich denn mit den Zählern durcheinander:
Hier mal als Beispiel
For I = 0 To 10
For Y = 0 To 40  'Innere Schleife um die Zeilenzahl hochzuzählen
If Cells(Y, 4).Value = ("F")  Then Cells(Y, 5).Value = (I) ' eintragen der Werte wenn  _
Bedingung F gegeben
ElseIf Cells(Y, 4).Value = ("M")  Then Cells(X + Y, 5).Value = (I) ' eintragen der  _
Werte wenn Bedingung M gegeben
End If
Y = Y + 1
I = I + 1
Next
Next
Kann mir da jemand beim entwirren helfen, so langsam hängt sich mein Hirn aus?
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 10:03:54
Nepumuk
Hallo Ralf,
so:
For I = 0 To 10
For Y = 0 To 40  'Innere Schleife um die Zeilenzahl hochzuzählen
If Cells(Y, 4).Value = ("F") Then
Cells(Y, 5).Value = (I)
ElseIf Cells(Y, 4).Value = ("M") Then
Cells(X + Y, 5).Value = (I)
End If
Y = Y + 1
I = I + 1
Next
Next

Gruß
Nepumuk
Anzeige
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 10:05:21
Nepumuk
Ich nochmal,
die Klammern sind überflüssig:
For I = 0 To 10
For Y = 0 To 40  'Innere Schleife um die Zeilenzahl hochzuzählen
If Cells(Y, 4).Value = "F" Then
Cells(Y, 5).Value = I
ElseIf Cells(Y, 4).Value = "M" Then
Cells(X + Y, 5).Value = I
End If
Y = Y + 1
I = I + 1
Next
Next

Gruß
Nepumuk
Anzeige
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 11:34:04
Ralf
Hallo Nepumuk,
leider funktioniert das auch nicht, es wird nicht in jede notwendige Zeile der Wert I geschrieben. Hier erfolgt ein nicht nachvollziehbares Muster :-(
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 10:14:25
Werner
Hallo,
For Y = 0 To 40  'Innere Schleife um die Zeilenzahl hochzuzählen
If Cells(Y, 4).Value = "F" Then
Y = 0
Spalte = 4 = D
Die Zelle D0 gibt es nicht.
Gruß Werner
Anzeige
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 11:34:52
Ralf
Hallo Werner,
Ich habe den Code vereinfacht. Es gibt hier noch einen Offset ;-)
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 13:05:29
Ralf
Konnte jetzt den Else IF Bedingung elimienieren, der Code sieht jetzt so aus:
For I = 0 To 10
For Y = 0 To 40  'Innere Schleife um die Zeilenzahl hochzuzählen
If Cells(Y, 4).Value 
Leider funktioniert die Abarbeitung noch nicht vernünftig. Es Scheint als ist in der Abarbeitung der Zeilen / I ein Dreher.
Ziel ist, das er Zeile für Zeile prüft und wenn er etwas findet den Wert für I ein die Zelle schreibt und I einen Zähler nach oben setzt.
Anzeige
AW: If / Else If Schleife in zwei For Schleifen
04.11.2019 13:20:02
Nepumuk
Hallo Ralf,
so setzt du aber den Zähler um 2 nach oben. Einmal durch Y = Y + 1 und einmal durch Next.
Gruß
Nepumuk
AW: If / Else If Schleife in zwei For Schleifen
05.11.2019 08:03:49
Ralf
Hallo Nepumuk,
Das hilft schon ein wenig, aber er zähht I über die gegebene Grenze hinnaus aus. Müßte ich innere und äußere Schleife tauschen?
Grüße
Ralf
Anzeige
AW: If / Else If Schleife in zwei For Schleifen
05.11.2019 08:17:10
Ralf
Es fehlt quasi ein Ausstieg aus der Innern Schleife wenn die Bedingung erfüllt und der Wert geschrieben wurde.
AW: If / Else If Schleife in zwei For Schleifen
05.11.2019 09:11:20
Nepumuk
Hallo Ralf,
aus einer For-Next - Schleife auszusteigen geht so: Exit For
Gruß
Nepumuk
AW: If / Else If Schleife in zwei For Schleifen
05.11.2019 10:44:23
Ralf
Vielen Dank, nach einigen spielen mit den Schleifen und end for funktioniert alles :-)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

If / Else If Schleifen in verschachtelten For Schleifen


Schritt-für-Schritt-Anleitung

Um eine If / Else If Schleife in zwei For Schleifen in Excel VBA korrekt zu implementieren, folge diesen Schritten:

  1. Deklaration der Variablen: Stelle sicher, dass Du alle Variablen deklarierst. Zum Beispiel kannst Du Dim I As Integer und Dim Y As Integer nutzen.

  2. Äußere Schleife erstellen: Beginne mit der äußeren For Schleife:

    For I = 0 To 10
  3. Innere Schleife erstellen: Setze die innere For Schleife auf:

    For Y = 0 To 40
  4. If-Bedingung hinzufügen: Füge die If und Else If Bedingungen hinzu:

    If Cells(Y, 4).Value = "F" Then
       Cells(Y, 5).Value = I
    ElseIf Cells(Y, 4).Value = "M" Then
       Cells(Y, 5).Value = I
    End If
  5. Inkrementieren der Zähler: Inkrementiere die Zähler nur einmal, um unnötige Erhöhungen zu vermeiden:

    Next Y
    Next I
  6. Exit For einfügen (optional): Wenn Du die innere Schleife verlassen möchtest, nachdem eine Bedingung erfüllt ist, kannst Du Exit For verwenden.


Häufige Fehler und Lösungen

  • Fehlerhafte Zellreferenzen: Achte darauf, dass Du nicht auf Zellen zugreifst, die nicht existieren (z. B. Cells(Y, 4) wenn Y = 0).

  • Doppelte Inkrementierung: Vermeide das doppelte Erhöhen des Zählers I durch das Inkrementieren in der Schleife und im Code. Dies kann zu unerwarteten Ergebnissen führen.

  • Klammern um Bedingungen: Klammern sind in den If-Bedingungen nicht notwendig und können entfernt werden, um die Lesbarkeit zu verbessern.


Alternative Methoden

Falls Du eine flexiblere Lösung benötigst, kannst Du auch Select Case verwenden:

For I = 0 To 10
    For Y = 0 To 40
        Select Case Cells(Y, 4).Value
            Case "F"
                Cells(Y, 5).Value = I
            Case "M"
                Cells(Y, 5).Value = I
        End Select
    Next Y
Next I

Diese Methode kann den Code übersichtlicher machen, besonders wenn Du mehrere Bedingungen prüfen musst.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das die oben genannten Punkte umsetzt:

Sub Beispiel()
    Dim I As Integer
    Dim Y As Integer

    For I = 0 To 10
        For Y = 0 To 40
            If Cells(Y, 4).Value = "F" Then
                Cells(Y, 5).Value = I
                Exit For
            ElseIf Cells(Y, 4).Value = "M" Then
                Cells(Y, 5).Value = I
                Exit For
            End If
        Next Y
    Next I
End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich zur Deklaration aller Variablen und hilft, Fehler zu vermeiden.

  • Fehlerbehandlung einfügen: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler effektiv zu handhaben.

  • Code kommentieren: Halte Deinen Code gut dokumentiert, um die Lesbarkeit zu erhöhen, insbesondere wenn Du komplexe Bedingungen verwendest.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Bedingungen in einer If-Schleife prüfen?
Verwende ElseIf, um zusätzliche Bedingungen zu prüfen, oder Select Case für eine übersichtlichere Struktur.

2. Was ist der Unterschied zwischen If und ElseIf in Excel VBA?
If wird verwendet, um die erste Bedingung zu prüfen, während ElseIf für nachfolgende Bedingungen genutzt wird, die nur geprüft werden, wenn die vorherige Bedingung nicht erfüllt ist.

3. Wie kann ich die Schleifensteuerung optimieren?
Verwende Exit For, um schnell aus einer Schleife auszutreten, sobald eine Bedingung erfüllt ist, um die Effizienz zu steigern.

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