Hallo an alle,
ich habe vor etwa zwei wochen angefangen, mich mit Excel VBA zu beschäftigen und hänge nun an einem Problem, das meiner Meinung nicht bestehen dürfte. Ich habe das Problem mal in einem Beispiel zusammengefasst, damit es leichter nachvollziebar ist. Ich möchte einen Bereich auswerten, der wie folgt aussieht:
A B C
xxxx |
01.10.2012 |
01.10.2012 |
xxxx |
02.10.2012 |
02.10.2012 |
xxxx |
03.10.2012 |
03.10.2012 |
yyyyy |
02.10.2012 |
02.10.2012 |
yyyyy |
03.10.2012 |
03.10.2012 |
yyyyy |
04.10.2012 |
04.10.2012 |
yyyyy |
05.10.2012 |
05.10.2012 |
zzzzz |
08.10.2012 |
08.10.2012 |
zzzzz |
09.10.2012 |
09.10.2012 |
zzzzz |
10.10.2012 |
10.10.2012 |
zzzzz |
11.10.2012 |
11.10.2012 |
Dazu gehört folgender Beispielcode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Option Explicit
Sub test()
Dim m As Integer
For m = 1 To 20
Do Until Cells(m, 1) <> Cells(m + 1, 1)
If Cells(m, 2) < Cells(m + 1, 2) Then
Cells(m + 1, 2).Delete
End If
If Cells(m, 3) < Cells(m + 1, 3) Then
Cells(m, 3).Delete
End If
Cells(m, 1).Delete
Loop
If Cells(m + 1, 1) = "" Then
Exit For
End If
Next m
End Sub
|
Ziel ist es, dass ich am Ende nur noch drei Zeilen übrig behalte, die mir einen Text in Spalte A liefert, in Spalte B das früheste zugehörige Datum und in Spalte C das späteste zugehörige Datum:
xxxx |
01.10.2012 |
03.10.2012 |
yyyyy |
02.10.2012 |
05.10.2012 |
zzzzz |
08.10.2012 |
11.10.2012 |
Das geht mit Sicherheit auch irgendwie einfacher, aber die Ausgangswerte bekomme ich aus einem bereits bestehenden VBA-Programm und möchte sie mit diesem Ziel auswerten. Und was ich nicht ganz verstehe, ist, dass alles funktioniert, bis die Schleife den vorvorletzten Wert erreicht. Bei dem Schritt:
1 2 3 | If Cells(m, 2) < Cells(m + 1, 2) Then
Cells(m + 1, 2).Delete
End If
|
löscht er statt der Zelle in Spalte B die in Spalte C und ich habe nur noch das:
xxxx |
01.10.2012 |
03.10.2012 |
yyyyy |
02.10.2012 |
05.10.2012 |
zzzzz |
08.10.2012 |
10.10.2012 |
zzzzz |
11.10.2012 |
|
Danach stimmt die Ausgabe selbstverständlich nicht mehr.
Es wäre schön, wenn jemand einen Tip hätte, ich weiß nämlich wirklich nicht, was die Falschlöschung verursacht.
Für Hinweise jetzt schonmal vielen, vielen Dank und viele Grüße.
|