Ich versuche, verschiedene Bedingungen mit VBA zum Füllen meiner Spalten und Zeilen zu überprüfen.Excel: Testbedingungen mit if
Das ist, was ich bisher versucht habe:
For i = 1 To Lastrow
For j = 1 To 11
If (IsEmpty(ws1.Range("C12"))) And (IsEmpty(ws1.Range("D12"))) = True Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
ElseIf (IsEmpty(ws1.Range("C12")) And (ws1.Cells(i, 8) <= ws1.Cells(12, 4))) = True Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
ElseIf (IsEmpty(ws1.Range("D12")) And (ws1.Cells(i, 8) <= ws1.Cells(12, 4))) = True Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
ElseIf (ws1.Cells(12, 3) >= ws1.Cells(i, 7) And ws1.Cells(12, 3) <= ws1.Cells(i, 8)) Or (ws1.Cells(12, 4) >= ws1.Cells(i, 7) And ws1.Cells(12, 4) <= ws1.Cells(i, 8)) Or ((ws1.Cells(12, 3) >= ws1.Cells(i, 7)) And (ws1.Cells(12, 4) <= ws1.Cells(i, 8))) Then
ws2.Cells(i, j) = ws1.Cells(i, j).Value
End If
Next j
Next i
Wie Sie sehen können, habe ich eine Menge von Bedingungen testen.
Das Problem ist mit den Anweisungen, wo Zellen C12 oder D12 leer sind. Wenn D12 leer ist, sollte der Code mir alle Daten geben, die ab dem Datum C12 angegeben wurden.
Zum Beispiel möchte ich alles, was von 15/05/2017 beginnt:
Und das ist das Ergebnis, das ich bekam:
Wie Sie sehen können, ist es nicht richtig. Ich habe alles einzeln getestet und es funktioniert, aber wenn ich alles zusammen bekomme, bekommt es ein paar Fehler.
Außerdem bin ich wirklich im Zweifel, wenn meine If/ElseIf
Aussagen alle Bedingungen in der Reihenfolge prüfen oder wenn ich in einer korrekten Weise schrieb. Gibt es eine andere Möglichkeit, es in der von mir gewünschten Reihenfolge auszuführen?
Sie brauchen nicht '= true' Zustand in' If' Blöcke. Sie können einfach 'If' schreiben. Und sind Ihre Datumsspalten tatsächlich im Datumsformat? Wenn nicht, wird Ihr Vergleich fehlschlagen. –
Taosique
@Taosique aber für 'IsEmpty' immernoch notwendig, oder? Ja, sie sind ... Alles ist im Datumsformat, ich habe überprüft. – paulinhax
Ja, wenn Ihre Geschäftslogik es so braucht. – Taosique