Microsoft Excel

Herbers Excel/VBA-Archiv

Datum anpassen in einer Datumsreihe | Herbers Excel-Forum


Betrifft: Datum anpassen in einer Datumsreihe von: edie
Geschrieben am: 28.01.2010 12:16:51

Hallo zusammen,

ab der Zelle A4, nach unten variabel lang, stehen Zahlen und zwischen durch mal immer
wieder paarweise Zellen mit Datum. Dabei wird die Spalte A immer wieder neu erstellt d.h.
die Zahlen und Datum sind immer wieder neu. (siehe Bild)

Nun suche ich, bisweilen vergebens, nach einer Möglichkeit, das Jahr zu erhöhen beim unteren Datum, wenn der Monat kleiner ist wie der Monat oben.

Beispiel:
A20= 25.08.1970
A21 = 02.02.1970

Da das Datum 02.02.1970 kleiner ist als 25.08.1970 soll 02.02.1971 stehen.

Wie kann man das in einer Schleife abarbeiten?

 AB
4Datumsreihe 
51 
61 
71 
81 
91 
1002.06.1970 
1105.08.1970 
122 
132 
142 
152 
1613.06.1970 
1710.09.1970 
183 
193 
2025.08.1970 
2102.02.1970soll aber 1971
224 
234 
244 
254 
264 
2703.09.1970 
2813.05.1970soll aber 1971

Tabellendarstellung in Foren Version 5.5



Kan mir jemand dabei helfen?

Vielen Dank im Voraus.

Grüße

  

Betrifft: AW: Datum anpassen in einer Datumsreihe von: Ptonka
Geschrieben am: 28.01.2010 12:24:21

Hallo edie,

wie werden denn die Werte in Spalte A eingetragen? händisch? per Makro? per Kopierbefehl?
Das müsste man wissen.

Gruß,
Ptonka


  

Betrifft: AW: Datum anpassen in einer Datumsreihe von: edie
Geschrieben am: 28.01.2010 13:03:20

Hallo Ptonka,

die Daten werden per Makro kopiert.

Aber denkbar wäre eine Makro noch einmal durchlaufen lassen.

vielen Dank für die Hilfe.

Grüße edie


  

Betrifft: AW: Datum anpassen in einer Datumsreihe von: edie
Geschrieben am: 28.01.2010 13:14:28

Hallo,

es kann ja auch eine Formel sein die man nach unten kopieren kann.

Vorab vielen Dank.

Grüße edie


  

Betrifft: AW: Datum anpassen in einer Datumsreihe von: Ptonka
Geschrieben am: 28.01.2010 14:08:30

Hallo edie,

dann frag doch in dem Makro (vermutlich ist es eine Schleife) ab,
ob es sich bei dem zugewisenen Wert um ein Datum handelt.
Falls Ja, schreib den Monat in eine Variable.
Dann vergleichst Du den Monat mit dem Monat des vorherigen Wertes
(ebenfalls in einer Variable) und wenn Monat2 kleiner als Monat1 ist
dann erhöhe das Jahr um 1.

Dazu müsste man aber das Makro kennen, um diese Abfrage sinnvoll einzubauen.

Gruß,
Ptonka


  

Betrifft: AW: Datum anpassen in einer Datumsreihe von: Tino
Geschrieben am: 28.01.2010 14:20:42

Hallo,
ich habe es so versucht, kannst ja mal testen.

Sub test()
Dim meAR
Dim a&

meAR = Range("A2", Cells(Rows.Count, 1).End(xlUp))

For a = 1 To Ubound(meAR) - 1
 If IsDate(meAR(a, 1)) Then
  If IsDate(meAR(a + 1, 1)) Then
   If meAR(a, 1) > meAR(a + 1, 1) Then
    meAR(a + 1, 1) = DateSerial(Year(meAR(a, 1)) + 1, Month(meAR(a + 1, 1)), Day(meAR(a + 1, 1)))
    a = a + 1
   End If
  End If
 End If
Next a

Range("A2").Resize(Ubound(meAR)) = meAR
End Sub
Gruß Tino


  

Betrifft: AW: Datum anpassen in einer Datumsreihe von: edie
Geschrieben am: 28.01.2010 14:44:47

Hallo Ptonka,
Hallo Tino,

bin unendlich froh, es funktioniert einwandfrei.

Hätte es mit meinen Kenntnissen „VBA nur mit Macrorecorder“ nie geschafft.

Vielen herzlichen Dank.

Grüße edie


  

Betrifft: Was kann man gegen dd/mm/YYYY tun? von: edie
Geschrieben am: 28.01.2010 22:16:43

Hallo zusammen,

habe bereits festgestellt, dass wenn der Tag größer 12 ist, dann wird das Datum statt 20.06.2001

in die englische Schreibweise 06/20/2001 umgewandelt.

Kann man was dagegen tun?

Für jede Hilfe bin ich sehr dankbar.

Grüße edie


  

Betrifft: versuche es mal mit dieser Version... von: Tino
Geschrieben am: 31.01.2010 13:15:56

Hallo,

Sub Datum_Zelle(ByRef rngDatumZelle As Range, ByVal rngZelle As Range)
  If rngDatumZelle Is Nothing Then
   Set rngDatumZelle = rngZelle
  Else
   Set rngDatumZelle = Union(rngDatumZelle, rngZelle)
  End If
End Sub

Sub test()
Dim meAR
Dim a&
Dim rngDatumZelle As Range

meAR = Range("A2", Cells(Rows.Count, 1).End(xlUp))

For a = 1 To Ubound(meAR) - 1
 If IsDate(meAR(a, 1)) Then
  
  Datum_Zelle rngDatumZelle, Cells(a + 1, 1)
  
  If IsDate(meAR(a + 1, 1)) Then
   
   Datum_Zelle rngDatumZelle, Cells(a + 2, 1)
   
   If meAR(a, 1) > meAR(a + 1, 1) Then
        meAR(a + 1, 1) = DateSerial(Year(meAR(a, 1)) + 1, Month(meAR(a + 1, 1)), Day(meAR(a + 1, 1)))
        a = a + 1
   End If
  End If
 End If
Next a

Range("A2").Resize(Ubound(meAR)) = meAR
If Not rngDatumZelle Is Nothing Then
 rngDatumZelle.NumberFormat = "DD/MM/YYYY"
End If

End Sub
Gruß Tino


Beiträge aus den Excel-Beispielen zum Thema "Datum anpassen in einer Datumsreihe"