Frage zu Datum
Hallo Leute,
habe eine Frage. In eine Zelle (A1) soll das Jahr eingeben werden, das muss ich danach automatisch in andere Datumszellen übernehmen (dort steht dann 01.01.A1, 31.01.A1, ...).
Wie kann ich das bewerkstelligen?
LG Ricardo
Antwort schreiben
Antwort 1 von rainberg vom 30.03.2021, 15:50 OptionsLösung
Hallo Ricardo,
die Formel für den 1. Januar des in A1 stehenden Jahres lautet:
=DATUM(A1;1;1)
Gruß
Rainer
Antwort 2 von netmx vom 30.03.2021, 15:55 Options
Hallo Rainer,
danke für die Antwort. Das ist auch korrekt so. Aber was ist mit dem Monatsende? Ich will dass es automatisch den 31./30./29./28.Monat.A1 erkennt.
LG Ricardo
Antwort 3 von rainberg vom 30.03.2021, 17:22 Options
Hallo Ricardo,
so richtig verstehe ich nicht, was Du erreichen willst.
Angenommen in A1 steht 2009 und in B1 steht Februar, dann ergibt diese Formel
=DATUM($A$1;MONAT(B$1&1)+1;0)
das Ergebnis 28.02.2009
Ansonsten müsstest Du mal genauer schildern, wo steht was und wo soll welches Ergebnis stehen.
Gruß
Rainer
Antwort 4 von netmx vom 31.03.2021, 09:26 Options
Hallo Rainer,
ich will dass der Benutzer selbst 01.01. reinschreibt und die Zelle automatisch mit A1 ergänzt wird.
Bsp: Benutzer schreibt 01.01. in die Zelle, wird automatisch geändert in 01.01.A1. Es soll keine Formel in der Zelle stehen, der Benutzer soll sich nicht mit einer Datumsformel herumschlagen müssen.
Danke für die Hilfe!
LG Ricardo
Antwort 5 von rainberg vom 31.03.2021, 11:30 Options
Hallo Ricardo,
dann mach es doch einfach mit der Tastenkombination Strg+. (Punkt), dann kannst Du sogar auf den Eintrag in A1 verzichten.
Gruß
Rainer
Antwort 6 von Saarbauer vom 31.03.2021, 12:17 Options
Hallo,
das ist nur per Makro zu lösen. Ob der aufwand sich lohnt, musst du selbst wissen.
Gruß
Helmut
Antwort 7 von netmx vom 31.03.2021, 14:51 Options
Danke für die Antworten.
Wie würde das mit einem Makro ausschauen?
LG Ricardo
Antwort 8 von rainberg vom 31.03.2021, 17:52 Options
Hallo Ricardo,
ein Makro könnte so aussehen, es müsste jedoch noch auf einen gewünschten Tabellenbereich beschränkt werden.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Value = CDate(Left(Target, 2) & "." & Mid(Target, 4, 2) & "." & Range("A1").Value)
Application.EnableEvents = True
End Sub
Es ändert in der Eingabezelle den Wert z.B
12.05. in
12.05.2009, wenn in A1 2009 steht.
Voraussetzung: Eingabe immer 6-stellig im Format "
TT.MM."
Gruß
Rainer
Antwort 9 von netmx vom 01.04.2021, 09:18 Options
Hallo Rainer,
ich habe das Makro eingefügt, da passiert aber nichts.
Muss ich noch etwas ändern?
LG Ricardo
Antwort 10 von netmx vom 01.04.2021, 09:51 Options
Was noch fehlt: Der Bereich, auf den das angewendet werden soll ist I3:J14.
Vielen Dank!
LG Ricardo
Antwort 11 von rainberg vom 01.04.2021, 10:25 Options
Hallo Ricardo,
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("I3:J14")) Is Nothing Then
Target.Value = CDate(Left(Target, 2) & "." & Mid(Target, 4, 2) & "." & Range("A1").Value)
End If
Application.EnableEvents = True
End Sub
Gruß
Rainer
Antwort 12 von netmx vom 01.04.2021, 11:21 Options
Vielen Dank, Rainer!
Habe das Makro eingefügt, die Arbeitsmappe gespeichert. Leider passiert nichts! Was habe ich falsch gemacht?
LG Ricardo
Antwort 13 von rainberg vom 01.04.2021, 11:28 Options
Hallo Ricardo,
das Makro funktioniert, es gehört in den Codebereich des Arbeitsblattes, in dem es wirken soll.
Gruß
Rainer
Antwort 14 von netmx vom 01.04.2021, 12:27 Options
Rainer, Rainer, DAS IST WAHNSINN!
Vielen, vielen Dank! Echt genial!
Wenn ich A1 ändere soll der Bereich auch geändert sein. Ist das möglich?
LG Ricardo
Antwort 15 von rainberg vom 01.04.2021, 12:38 Options
Hallo Ricardo,
Zitat:
Wenn ich A1 ändere soll der Bereich auch geändert sein.
.....das verstehe ich jetzt nicht, in A1 steht doch die Jahreszahl, die zur Vervollständigung des Datums gebraucht wird und hat nichts mit dem Bereich zu tun.
Was willst Du nun ändern???
Und falls Du noch ein Anliegen in diesem Zusammenhang hast, bitte nenne es gleich.
Gruß
Rainer
Antwort 16 von netmx vom 01.04.2021, 13:43 Options
Wenn 2008 in A1 steht, dann kann ich die in den Bereich I3:J14 im Formar TT.MM. eintragen.
Wenn ich das gemacht habe und ich dann in A1 2007 eintrage, bleibt der Wert im Bereich I3:J14 im Format TT.MM.2008.
Kannst du mir sagen welchen Code ich brauche dass es den Bereich I3:J14 dann automatisch updatet?
LG Ricardo
Antwort 17 von rainberg vom 01.04.2021, 14:22 Options
Hallo Ricardo,
ja, das geht, aber leider antwortest Du immer nur in Fragmenten.
Welcher Bereich soll bei 2007 angesteuert werden?
Willst Du dann noch mehr Jahreszahlen und Bereiche einbeziehen?
Wenn ja, welche?
Gruß
Rainer
Antwort 18 von netmx vom 02.04.2021, 12:19 Options
Welcher Bereich soll bei 2007 angesteuert werden?
> Nur die Jahreszahl, d.h. aus 2007 soll 2008 werden (im gesamten Bereich I3:J14)
Willst Du dann noch mehr Jahreszahlen und Bereiche einbeziehen?
> Nein
Bsp:
A1=2007
I3=01.0.1
Skript ändert I3 zu 01.01.2007
Ich ändere A1 zu 2008
I3 bleibt 01.01.2007
Ich hätte gerne, dass I3 automatisch 01.01.2008 wird und nicht dass ich auf die Zelle doppelklicken muss!
Vielen Dank im Voraus. Wenn du noch fragen hast: bitte nicht zögern!
LG Ricardo
Antwort 19 von rainberg vom 02.04.2021, 12:34 Options
Hallo Ricardo,
da muss ich meine Aussage aus AW17 zurückziehen.
Die Jahreszahl in A1 muss immer vor der Eingabe in den Zellen des Bereiches I3:J14 eingetragen sein.
Gruß
Rainer
Antwort 20 von rainberg vom 02.04.2021, 13:01 Options
Hallo Ricardo,
wenn Du es so meinst, dass Du einerseits im Bereich I3:J14 Werte im Format "TT.MM." eingeben kannst, die dann in ein vollständiges Datum, entsprechend der Jahreszahl in A1, gewandelt werden
und andereseits bei Änderung der Jahreszahl in A1 alle bereits vorhandenen Daten in I3:J14 entsprechend dieser geändert werden sollen, dann funktioniert das mit diesem Code.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngC As Range, rngBer As Range
Application.EnableEvents = False
Set rngBer = Range("I3:J14")
If Not Intersect(Target, rngBer) Is Nothing Then
Target.Value = CDate(Left(Target, 2) & "." & Mid(Target, 4, 2) & "." & Range("A1").Value)
ElseIf Not Intersect(Target, Range("A1")) Is Nothing Then
For Each rngC In rngBer
If rngC.Value <> "" Then
rngC.Value = CDate(Day(CDate(rngC)) & "." & Month(CDate(rngC)) & "." & Range("A1").Value)
End If
Next
End If
Application.EnableEvents = True
End Sub
Gruß
Rainer