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

For Each mit mehreren Bedingungen

Forumthread: For Each mit mehreren Bedingungen

For Each mit mehreren Bedingungen
26.04.2016 09:53:51
Chris
Hallo zusammen,
ich möchte einen Code schreiben, der Werte bearbeitet, die einerseits kleiner als 1 sind und andererseits aktueller als das aktuelle Datum, das heißt deren Datum in der Zukunft liegt. Leider bekomme ich das nicht hin... könnt ihr mir hierbei helfen?
Private Sub CommandButton1_Click()
Dim Order As Double
Dim Quote As Double
Dim Zelle As Range
'Value mit Probability 

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: For Each mit mehreren Bedingungen
26.04.2016 09:59:29
Rudi
Hallo,
nur du weißt, wo das Datum steht.
    For Each Zelle In Range("S:S")
If Zelle.Value  Date  Then
Quote = Quote + Zelle.Value * Zelle.Offset(0, -6).Value
End If
Next

DieZelleMitDatum kannst du ja auch per OffSet auslesen.
Gruß
Rudi

Anzeige
AW: For Each mit mehreren Bedingungen
26.04.2016 10:43:22
Chris
Hallo Rudi,
das Datum steht in einer eigenen Spalte. Zu jedem Wert in Spalte S gehört also ein eigenes Datum in Spalte Q. Somit kann ich nicht einfach eine Zelle hier betrachten..

AW: For Each mit mehreren Bedingungen
26.04.2016 10:57:21
Fennek
Hallo,
Deine Antwort hat eine Berechtigung.
Wenn du den Vorschlag mit 'offset' aufgreiftst, sollte es funktionieren.
Einfacher verständlich wäre es die 'for each' durch eine for i = 2 to lastrow' zu ersetzen. Dann wird deutlich, dass die Werte einer Zeile verrechnet weden.
Mfg

Anzeige
AW: For Each mit mehreren Bedingungen
26.04.2016 11:47:05
Rudi
Hallo,
dann eben
If Zelle.Value Date
Gruß
Rudi

AW: For Each mit mehreren Bedingungen
26.04.2016 12:34:13
Chris
Hallo ihr beiden,
besten Dank - es klappt hervorragend!
;
Anzeige
Anzeige

Infobox / Tutorial

For Each mit mehreren Bedingungen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen VBA-Code zu schreiben, der Werte in einer Excel-Tabelle bearbeitet, die kleiner als 1 sind und deren Datum in der Zukunft liegt, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (DeineDatei)" klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton1_Click()
       Dim Order As Double
       Dim Quote As Double
       Dim Zelle As Range
       Dim lastRow As Long
    
       lastRow = Cells(Rows.Count, "S").End(xlUp).Row
    
       For i = 2 To lastRow
           Set Zelle = Cells(i, "S")
           If Zelle.Value < 1 And Cells(i, "Q").Value > Date Then
               Quote = Quote + Zelle.Value * Cells(i, "S").Offset(0, -6).Value
           End If
       Next i
       MsgBox "Quote: " & Quote
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Füge einen Button hinzu, der den Code ausführt, und teste ihn.


Häufige Fehler und Lösungen

  • Fehler: "Typen sind inkompatibel"

    • Lösung: Stelle sicher, dass die Zellen in der Spalte "S" numerische Werte enthalten und die Zellen in der Spalte "Q" gültige Datumsangaben sind.
  • Fehler: "Schleifenfehler"

    • Lösung: Überprüfe den lastRow-Wert, um sicherzustellen, dass er korrekt berechnet wird. Stelle sicher, dass die Daten in der Spalte "S" vorhanden sind.

Alternative Methoden

Anstelle der For Each-Schleife kannst du auch eine For-Schleife verwenden, wie im Schritt-für-Schritt-Beispiel gezeigt. Dies kann die Lesbarkeit des Codes verbessern und die Performance steigern, besonders bei großen Datenmengen.


Praktische Beispiele

Angenommen, du hast folgende Daten in Excel:

S Q
0.5 2023-10-05
1.2 2022-09-15
0.8 2024-01-01

Der obige Code wird nur den Wert 0.5 berücksichtigen, da er kleiner als 1 ist und das Datum in der Zukunft liegt.


Tipps für Profis

  • Verwende Option Explicit: Setze Option Explicit an den Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft dir, Fehler zu vermeiden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung mit On Error Resume Next, um sicherzustellen, dass dein Code auch bei unerwarteten Eingaben stabil bleibt.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Spalten zu berücksichtigen?
Du kannst zusätzliche Bedingungen in der If-Anweisung hinzufügen, um weitere Spalten zu überprüfen.

2. Funktioniert der Code in Excel 2016?
Ja, der Code ist mit Excel 2016 und neueren Versionen kompatibel. Achte darauf, dass deine Excel-Anwendung VBA unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige