Live-Forum - Die aktuellen Beiträge
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
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