Microsoft Excel

Herbers Excel/VBA-Archiv

Datenreihe | Herbers Excel-Forum


Betrifft: Datenreihe von: Volker
Geschrieben am: 10.01.2010 18:35:55

Einen schönen Sonntag zusammen,

ich habe hier mal eine Mappe hochgeladen, welche mir mal wieder Kopfzerbrechen bereitet.

https://www.herber.de/bbs/user/67115.xls

In die Spalten A + B soll das Datum eingefügt werden. In Spalte A als Wochentag in Spalte B als reguläres Datum. (Wobei diese Formatierung für Spalte A nur das sekundäre Problem ist).

Ich möchte das nach dem letzen eines Monats (Januar bis einschließlich November) eine Leerzeile eingefügt wird. Nun das geht auch über die vielen if / then Anweisungen. Vieleicht nicht elegant, aber funktioniert. Jetzt bereitet mir aber der Februar in einem Schaltjahr Probleme.

Ich hab schon versucht das mit der Funktion IstSchaltjahr zu lösen, aber... war wohl nichts.

Könnte mir jemand sagen wie ich die Fehler beseitige?

Danke und Gruß
Volker

  

Betrifft: AW: Datenreihe von: Mister B
Geschrieben am: 10.01.2010 18:41:29

Hallo,

ein Schaltjahr ermittelt man mit:

If (Year(Date) Mod 4) Then


Gruß
Martin


  

Betrifft: AW: Datenreihe von: Volker
Geschrieben am: 10.01.2010 18:58:14

Hallo Martin,
Danke für Deine Antwort,

ich habe Versucht den Code bei den ganzen if / then Anweisungen unterzubringen, funktioniert aber nicht.
Excel mäkelt "next ohne for".

Danke Gruß
Volker


  

Betrifft: If Not CBool(Year..., aber nur im Julianischen... von: Luc:-?
Geschrieben am: 10.01.2010 18:58:38

...Kalender, Martin;
wir verwenden aber schon seit Jhdd den Gregorianischen... Allerdings spielt dass nur bei Rückwärtsdatierung eine und ansonsten in den nächsten 390 Jahren keine Rolle... ;-)
Gruß Luc :-?


  

Betrifft: AW: If Not CBool(Year..., aber nur im Julianischen von: Volker
Geschrieben am: 10.01.2010 19:04:41

Hallo Luc :-?
Ich verstehe nur Bahnhof......
Gruß
Volker


  

Betrifft: WIKIPEDIA!!! owT von: Luc:-?
Geschrieben am: 10.01.2010 19:16:57

:-?


  

Betrifft: Allerdings wäre der Gültigkeitszeitraum... von: Luc:-?
Geschrieben am: 10.01.2010 19:32:42

...für diese Methode 109 Jahre rückwärts und nur 89 Jahre vorwärts (nicht 390!) gewesen, also von 1901 bis 2099... Sorry!
Luc :-?


  

Betrifft: andersrum von: Matthias L
Geschrieben am: 10.01.2010 19:03:29

Hallo

Du meinst kein Schaltjahr ermittelt man mit
If (Year(Date) Mod 4) Then ... ;o)

Gruß Matthias


  

Betrifft: AW: so einfach ist das mit dem Schaltjahr nicht von: Daniel
Geschrieben am: 10.01.2010 19:23:06

weils da doch Ausnahmen und Ausnahmen von der Ausnahme gibt (ist gar nicht so lang her).

die einfachste Methode dürfte sein (unter der Annahme, das MS die Sonderfälle berücksichtigt hat), zu schauen, welchen Wert die Funktion
Day(DateSerial(2012,3,0)) hat.
kommt 29 raus, ist 2012 ein Schaltjahr, ist das Ergebnis 28, dann ist es keins.

Gruß, Daniel


  

Betrifft: In VBA ist alles "Gregor", Daniel! ;-) owT von: Luc:-?
Geschrieben am: 10.01.2010 19:35:19

:-?


  

Betrifft: AW: Datenreihe von: Daniel
Geschrieben am: 10.01.2010 19:15:26

Hi

weiß nicht, ein Makro ist sehr aufwendig, im Prinzip lässt sich das ganze doch über eine Formel lösen.
das ganze ist so schnell, daß es keinen Fortschrittsbalken braucht.

Sub NeuesJahr()
Dim Anz As Long
Dim dat1 As Date, dat2 As Date
dat1 = DateSerial(Cells(1, 2), 1, 1)
dat2 = DateSerial(Cells(1, 2) + 1, 1, 1)

'Anzahl Tage ermitteln (Schaltjahr-Test)
Anz = dat2 - dat1 + 11

'Kalender einfügen, erster Tag fix, rest über Formel
Cells(3, 1).Resize(1, 2).Value = dat1
With Cells(4, 1).Resize(Anz - 1, 2)
  .FormulaR1C1 = _
    "=IF(R[-1]C="""",R[-2]C+1,IF(R[-1]C=DATE(YEAR(R[-1]C),MONTH(R[-1]C)+1,0),"""",R[-1]C+1))"
  .Formula = .Value
End With

'Datumsformat festlegen
Cells(3, 1).Resize(Anz, 1).NumberFormat = "DDDD"
Cells(3, 2).Resize(Anz, 1).NumberFormat = "DD.MM.YYYY"

'Färben, Farbindex und Spaltennummer für Hilfsspalte ggf anpassen
With Cells(3, 3).Resize(Anz, 1)
.FormulaR1C1 = "=IF(RC2="""",False,IF(ISEVEN(RC2),1,""x""))"
Intersect(Range("A:B"), .SpecialCells(xlCellTypeFormulas, 1).EntireRow).Interior.ColorIndex = 3
Intersect(Range("A:B"), .SpecialCells(xlCellTypeFormulas, 2).EntireRow).Interior.ColorIndex = 5
.ClearContents
End With
End Sub
Gruß, Daniel


  

Betrifft: AW: Datenreihe von: Volker
Geschrieben am: 10.01.2010 20:02:09

Hallo Danioel,
Danke für Deine Antwort,

funktioniert soweit, allerdings wird ein Fehler angezeigt: "Kein Zellen gefunden".

Die Zeile mit colorindex=3 wird hinterlegt. Ich vermute das ist eine Einstellungssache, nur ich weis nicht was ich veändern muss.
Die farbliche Hinterlegung soll nur für die Spalten A + B gelten.

Weitere Frage: Was ist " ISEVEN "? Habe in der Recherche nichts gefunden.

Danke und Gruß
Volker


  

Betrifft: AW: Datenreihe von: Volker
Geschrieben am: 10.01.2010 20:02:56

Hallo Danioel,
Danke für Deine Antwort,

funktioniert soweit, allerdings wird ein Fehler angezeigt: "Kein Zellen gefunden".

Die Zeile mit colorindex=3 wird hinterlegt. Ich vermute das ist eine Einstellungssache, nur ich weis nicht was ich veändern muss.
Die farbliche Hinterlegung soll nur für die Spalten A + B gelten.

Weitere Frage: Was ist " ISEVEN "? Habe in der Recherche nichts gefunden.

Danke und Gruß
Volker


  

Betrifft: AW: Datenreihe von: Daniel
Geschrieben am: 10.01.2010 20:10:38

Hi

fehlerüberprüfung ohne beispieldatei kann ich nicht machen, bei mir läuft das Makro.

IsEven ist der Englische Ausdruck für die Formel IstGerade, womit geprüft werden, ob eine Zelle durch 2 Teilbar ist oder nicht. Damit sollte die Wechselfärbung realisiert werden.
Fall dein Excel diese Funktion nicht kennen sollte, müsstet du den Text ISEVEN(RC2) durch MOD(RC2,2)=0 ersetzen.
falls dir die Farben nicht passen, musst du halt den Zahlenwert nach .Colorindex = ändern. Das kannst du sicherlich aus deinem alten Makro abschreiben.

Gruß, Daniel


  

Betrifft: AW: Datenreihe von: Volker
Geschrieben am: 10.01.2010 20:17:25

Hallo Daniel,
Hier die Datei :https://www.herber.de/bbs/user/67116.xls

Danke und Gruß
Volker


  

Betrifft: AW: warum machst du au RC2 ein RC3 von: Daniel
Geschrieben am: 10.01.2010 20:48:41

Hi

in der Zeile, wo die Formel mit ISEVEN reingeschrieben wird, steht bei mir : ISEVEN(RC2)
du machst in deinem Code aber ISEVEN(RC3) daraus.

warum?
so kann die Formel doch nicht funktionieren.

außerdem solltest du mal Prüfen, ob deine Excelversion die Formel "IstGerade" kennt.
wenn nicht, müsstest du die von mir beschriebene Korrektur durchführen. Aber bitte mit RC2 und nicht mit RC3.

Gruß, Daniel


  

Betrifft: AW: isEven von: hary
Geschrieben am: 10.01.2010 20:11:52

Hallo Volker
siehe hier:
http://office.microsoft.com/de-de/excel/HP052091481031.aspx
gruss hary


  

Betrifft: AW: isEven von: Volker
Geschrieben am: 10.01.2010 20:19:58

Hallo Hary,
Danke für die Antwort jetzt ist es klar.
Gruß
Volker


  

Betrifft: AW: Datenreihe von: robert
Geschrieben am: 10.01.2010 20:05:09

Hi,

datumsreihe allerdings ohne formate
und nur für eine spalte

einfach(primitiv)? aber wirksam ;-)

gruß
robert

Sub tt()
Dim i%, x%
Dim start As Date, Ende As Date, Y%
Columns(1).ClearContents
Y = Range("D1")
start = DateSerial(Y, 1, 1)
Ende = "31.12." & Year(start)
For i = 1 To 377
    If start > Ende Then Exit For
  Cells(i, 1) = start
start = start + 1
If Month(start) > Month(start - 1) Then
   i = i + 1
End If

Next i

End Sub



  

Betrifft: AW: Datenreihe von: Volker
Geschrieben am: 10.01.2010 20:24:57

Hallo robert,
Danke für die Antwort
Wer sagt eigentlich das das einfache nicht das Beste ist?
Gruß
Volker


Beiträge aus den Excel-Beispielen zum Thema "Datenreihe"