Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum aus Jahr, Monatstag und Kalenderwoche.

Datum aus Jahr, Monatstag und Kalenderwoche.
18.06.2018 19:38:36
laggiwon
Hallo Spezialisten,
nachdem ich jetzt schon eine ganze Weile vergeblich nach einem passenden Thema suche frage ich doch mal selbst.
Ist es möglich per Formel aus dem Jahr, dem Monatstag und der Kalenderwoche ein Datum zu generieren?
Beispiel heute:
A1 = Jahr = 18 (oder 2018)
B1 = Monatstag = 18
C1 = Kalenderwoche = 25
Ergebnis: 18.06.2018
Sollte ich trotz gründlicher Recherche übersehen haben, dass es bereits an anderer Stelle erklärt wurde, bitte um Entschuldigung und bitte um entsprechenden Link.
Vielen lieben Dank vorab und beste Grüße
laggiwon

47
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nachgefragt ...
18.06.2018 20:11:49
neopa
Hallo,
... handelt es sich bei dem Tag in B1 immer um einen Montag (wie im konkreten Fall)?
Dann gemäß einer Formel von Frank (Formelschmied) so: =7*RUNDEN((7&1-A1)/7+C1;0)+177
Im anderen Fall würde die Formel aufwendiger. Es sei denn, es interessiert sich jemand für die spez. Fragestellung und knobelt eine Kurzformel aus.
Gruß Werner
.. , - ...
AW: nachgefragt ...
18.06.2018 20:17:56
laggiwon
Hallo Werner,
vielen Dank für die schnelle Antwort.
"Leider" handelt es sich nicht immer um einen Montag (diese Variante hatte ich auch schon in anderen Themen gefunden).
Es können alle Tage sein.
Beste Grüße
laggiwon
Anzeige
das geht zu 75 % in die Hose
18.06.2018 20:24:25
WF
Hi,
den Montag einer vorgegebenen Kalenderwoche kann man bestimmen - siehe unsere:
http://www.excelformeln.de/formeln.html?welcher=186
Aktuell wäre das bei der 25 KW der 18.
Bis zum 24. kann man den Tag austauschen.
Willst Du dann bei z.B. dem vorgegebenen 14. ne Fehlermeldung ?
WF
AW: prüf mal meinen Vorschlag owT
18.06.2018 20:33:05
neopa
ruß Werner
.. , - ...
und was soll das ?
18.06.2018 20:59:39
WF
Hi,
gebe ich den 30. oder 04. oder sonst einen Tag außerhalb der KW vor erhalte ich immer den 17.06.2018
WF
AW: von außerhalb der KW war nicht die Rede owT
18.06.2018 21:06:05
außerhalb
Gruß Werner
.. , - ...
AW: von außerhalb der KW war nicht die Rede owT
18.06.2018 21:10:08
außerhalb
Außerhalb der KW ist auch nicht interessant und muss auch keine Fehlermeldung kommen...
Danke
Anzeige
Superhirn ?
18.06.2018 21:34:22
WF
Du weißt also auswendig, dass in der KW 44 des Jahres 2025 nur die
Monatstage 27 - 28 - 29 - 30 - 31 - 1 - 2 vorkommen können.
Denn nur einen davon gibst Du logischerweise vor.
bewundernswert
WF
AW: Superhirn ?
18.06.2018 21:37:55
laggiwon
Yup, ich bekomme die Daten ja schon fertig, brauche sie nur entschlüsselt um damit weitermachen zu können.
Wenn die nicht konsistent sind, hat schon jemand anderes einen Bock geschossen ;)
AW: ich hab nur umgesetzt, was Vorgabe war owT
18.06.2018 21:59:02
neopa
Gruß Werner
.. , - ...
die 7 KW-Tage waren nicht vorgegeben
18.06.2018 22:06:51
WF
.
AW: nicht explizit aber indirekt schon owT
19.06.2018 11:02:53
neopa
Gruß Werner
.. , - ...
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 20:20:26
neopa
Hallo,
... wenn der Tag in B1 kein Montag sein kann dann z.B. mit folgender Formel:
=7*RUNDEN((7&1-A1)/7+C1;0)+177+MAX(INDEX((TAG(ZEILE(INDEX(A:A;7*RUNDEN((7&1-A1)/7+C1;0)+177):INDEX(A:A;7*RUNDEN((7&1-A1)/7+C1;0)+177+6)))=B1)*ZEILE(A$1:A$7);))-1
Gruß Werner
.. , - ...
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 21:08:14
laggiwon
Hallo Werner,
vielen Dank. Nachdem ich die "-1" entfernt habe funktioniert es super.
Allerdings wird mir beim "runterziehen" immer nur der Montag der betreffenden Woche zurückgegeben...
https://www.herber.de/bbs/user/122164.xlsx
Hast Du hier vielleicht auch noch eine Lösung?
Danke
Anzeige
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 21:15:42
onur
Was ist denn mit meiner Lösung?
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 21:27:51
laggiwon
Lach' jetzt bitte nicht.
Ich scheitere gerade daran, das in meine bestehende Tabelle zu übertragen... :-/
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 21:30:38
onur
Einfach den code in modul 1 kopieren, vorher bei dir ggf modul 1 hinzufügen (projektexplorer/hinzufügen/modul) und schon steht dir die neue funktion zur verfügung.
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 21:46:39
laggiwon
Danke für die Hilfe.
Aber ich habe hier so eine übel beschnittene Workstation, dass ich nur das notwendigste darf :(
Der VBE ist noch nicht mal mit drauf
Deswegen hatte ich auch nach Formel gefragt...
Danke trotzdem
AW: auf die Schnelle mal was zusammengebastelt ...
18.06.2018 22:17:27
onur
Den VBA-Editor kannst du mit "Optionen/Menüband/Hauptregisterkarten/Entwicklertools" aktivieren.
Anzeige
AW: auf die Schnelle mal was zusammengebastelt ...
19.06.2018 00:33:29
Daniel
wie gezeigt, dieses Lösungprinzip kann man auch in einer Formel darstellen, die ist nicht so kompliziert.
die Schleife von 1-12 um alle Monate durchzutesten kann man auch in einer Matrixformel darstellen.
(Aggregat oder Summenprodukt)
Gruß Daniel
AW: auf die Schnelle mal was zusammengebastelt ...
19.06.2018 06:52:13
laggiwon
Habs gleich hinbekommen und funktioniert super.
DANKE Dir
AW: hattest meine Formel abgewandelt ...
18.06.2018 21:55:14
neopa
Hallo,
... so aber konnte diese nicht zum gewünschten Ergebnis führen.
Nachfolgend hab ich nun meine Formel auf Deine Datenstruktur angepasst und gleichzeitig auch die bisherige abschließende -1 gleich von der ersten 177 in der Formel abgezogen. Dort steht nun 176.
Die Formel F2 kannst Du sehr wohl nach unten ziehend kopieren. Nachstehend hab ich auch gleich ein paar weitere "interessanter" Fälle aufgezeigt, wo teils ein Monatswechsel berücksichtigt ist.
 BCDEF
1Jahr DDKWDatum
218 182518.06.2018
32018 232523.06.2018
418 24402.11.2018
52032 29929.02.2032
632 2902.03.1932
7     

Formeln der Tabelle
ZelleFormel
F2=7*RUNDEN((7&1-B2)/7+E2;0)+176+MAX(INDEX((TAG(ZEILE(INDEX(B:B;7*RUNDEN((7&1-B2)/7+E2;0)+177):INDEX(B:B;7*RUNDEN((7&1-B2)/7+E2;0)+177+6)))=D2)*ZEILE(B$1:B$7); ))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...
Anzeige
Datum aus Jahr, KW und Tag
18.06.2018 23:09:58
Josef
Hallo
=MONATSENDE(7*KÜRZEN((2&-1&-C2)/7+E2)-5;-1)+D2
Gruss Sepp
AW: schade ...
19.06.2018 10:12:37
neopa
Hallo Sepp,
... dass Du Dich diesmal zu später Stunde offensichtlich zu einem "Schnellschuss" verleiden lassen hast. Das ist für Dich an sich völlig ungewöhnlich und entspricht wohl ansonsten auch wohl eher meiner Art.
Ich hatte gehofft, Dass Du Dich für diese Problemstellung interessiert und bin auch überzeugt, dass von Dir noch ein besserer Lösungsvorschlag kommen wird.
Gruß Werner
.. , - ...
Schnellschuss
19.06.2018 11:27:14
Josef
Hallo Werner
Du hast recht, ich hatte meine fehlerhafte Variante zu wenig intensiv getestet.
Natürlich interessiert mich diese Frage sehr und ich werde versuchen, eine funktionierende Lösung zu erstellen. Aber ich werde mich erst heute Abend späht nochmals damit eingehender befassen.
Gruss Sepp
Anzeige
ausgehend vom KW-Anfang wird's einfacher
19.06.2018 12:23:26
WF
Hi,
Jahreszahl in C2; Monatstag in D2; KW in E2
folgende Arrayformel:
{=7*RUNDEN((7&1-C2)/7+E2;0)+177+VERGLEICH(1;(TAG(7*RUNDEN((7&1-C2)/7+E2;0)+177+ZEILE(X1:X7)-1)=D2)*1; )-1}
Für mich ist wichtig (die Formel ist ja auch kürzer), dass bei Tagen außerhalb der KW kein unsinniges Datum, sondern ne Fehlermeldung kommt.
WF
AW: geht etwas flexibler und auch ohne {} ...
19.06.2018 13:09:39
neopa
Hallo WF,
... mit einem gleichem Ansatz wie von Dir jetzt eingebracht, kommt man auch ohne {} aus und dies flexibler (weil man Zeilen einfügen/löschen kann) auch kürzer (auch dann, wenn man lieber anstelle an DM() etwas verständlicher RUNDEN() einsetzt).

=7*RUNDEN((7&1-C2)/7+E2;)+176+VERGLEICH(1;(TAG(7*DM((7&1-C2)/7+E2;)+176+{1;2;3;4;5;6;7})=D2)+0;)

Gruß Werner
.. , - ...
Anzeige
Kinkerlitzchen und DM lehne ich ab
19.06.2018 13:31:33
WF
.
AW: DM() schon sonst aber nicht owT
19.06.2018 14:11:12
neopa
Gruß Werner
.. , - ...
oder mit KÜRZEN statt RUNDEN
19.06.2018 23:44:46
Josef
Hallo
=7*KÜRZEN((2&-1&-C2)/7+E2)-6+VERGLEICH(D2;TAG(7*KÜRZEN((2&-1&-C2)/7+E2)-{5;4;3;2;1;0;-1});0)
Ist eigentlich nach dem Muster von WF. Mit anderen Versuchen bin ich kläglich gescheitert.
Gruss Sepp
AW: ja so, wenn überhaupt ...
20.06.2018 07:53:15
neopa
Guten Morgen Sepp,
... dürfte Deine Formelanpassung bzgl. ihrer jetzigen Kompaktheit wohl nur von Dir selbst oder Frank (der dies hier wohl leider nicht liest) noch zu unterbieten sein.
Gruß Werner
.. , - ...
AW: ja so, wenn überhaupt ...
21.06.2018 07:08:30
Peter
Hallo ihr fleißigen Helferlinge,
ich habe eure Diskussion gespannt verfolgt, auch wenn ich nicht mal die Hälfte wirklich verstanden habe ;) Vielen lieben Dank nochmal.
Diese Formel hier scheint dann also die aktuellste Lösung zu sein
=7*KÜRZEN((2&-1&-C2)/7+E2)-6+VERGLEICH(D2;TAG(7*KÜRZEN((2&-1&-C2)/7+E2)-{5;4;3;2;1;0;-1});0)
Wenn ich diese aber einsetze bekomme ich leider ein #NV zurück.
Mit meinen Kenntnissen konnte ich den fehlenden/falschen Verweis aber nicht identifizieren.
Muss ich noch etwas anderes einstellen oder noch andere Daten hinterlegen?
Dankeschön
Gruß Peter
Anzeige
#NV heißt: nicht in der KW
21.06.2018 07:44:33
WF
Hi,
Jahr in C2 / KW in E2 / Monatstag in D2
z.B. 2018 / 20 / 25 ergibt ein Datum, da der Monatstag innerhalb der KW liegt.
Bei #NV liegt dieser außerhalb.
WF
Einstellen musst Du sonst nichts.
mit "einfacher" Matrixformel
18.06.2018 22:12:00
Daniel
Also ich finde die Idee von Onur nicht schlecht, bei 12 Monaten kann man auch einfach alle mal durchtesten, dann muss sich nicht das Gehirn so verrenken.
allerdings geht das auch mit einer einfachen Matrixformel, man braucht dazu nicht unbedigt VBA:
=AGGREGAT(14;6;DATUM(A1;{1;2;3;4;5;6;7;8;9;10;11;12};B1)/(KALENDERWOCHE(DATUM(A1;{1;2;3;4;5;6;7;8;9;10;11;12};B1);21)=C1);1)
oder auch mit Summenprodukt für ältere Excelversionen, da von den 12 Monaten immer nur einer treffen kann:
=SUMMENPRODUKT(DATUM(A1;{1;2;3;4;5;6;7;8;9;10;11;12};B1)*(KALENDERWOCHE(DATUM(A1;{1;2;3;4;5;6;7;8;9;10;11;12};B1))=C1))
statt den Klammern {...} kann man natürlich auch sowas nehmen wie Zeile($A$1:$A$12), aber das könnte Probleme geben, wenn auf dem Blatt Zeilen gelöscht oder eingefügt werden und dieser Bereich betroffen ist.
Gruß Daniel
AW: gut, leider geringfügig noch inkorrekt ...
19.06.2018 11:00:43
neopa
Hallo Daniel,
... unproblematisch ist dabei noch, dass Deine Formeln zwingend 4stellige Jahreszahlen erfordern, denn dies ist ja auch durch den TE in seiner Datei gewährleistet.
Die eingestellte SUMMENPRODUKT()-Formel hast Du aber wohl nur oberflächlich geprüft. Diese erfordert zwingend noch als 2. Argument für KALENDERWOCHE() auch die 21. Ich weiß jetzt allerdings nicht, ob es dieses Argument in älteren Excelversionen schon gegeben hat und ob es KALENDERWOCHE() möglicherweise erst ab Excel2003 oder später gibt.
Mit der 21 als 2. Argument für KALENDERWOCHE() ist die Formel fast Ergebnis gleich mit der AGGREGAT()-Formel und beide damit fast perfekt.
Leider aber werden z.B. folgende Daten 2015 2 53 oder 2020 30 1 von beiden Formeln im Gegensatz zu meiner nicht als korrekte Datumswerte 02.01.2016 und 30.12.2019 erkannt. Sicherlich kann man darüber streiten, ob das für den TE relevant ist oder nicht.
Nach Deinen Aussagen hast Du Dich ja für Deine Formellösung durch die VBA_Lösung von onur inspirieren lassen. Dessen Lösung hab ich nicht getestet, weil ich mir keine xlsm/b-Dateien aus dem Netz lade und mich bekanntermaßen mangels ausreichender Kenntnisse nicht mit VBA auseinandersetze.
Auf jeden Fall haben Deine beide Formeln abgesehen von Ihrer besseren Übersichtlichkeit auch den Vorteil, dass sie Fehlvorgaben wie z.B. 2018 4 25 als Fehler (#ZAHL!) bzw. 0 quittieren.
Meine Formel hab ich der Vollständigkeit halber noch etwas ein gekürzt und sie damit auch unempfindlicher gegen Zeileneinschübe etc. gemacht.
Sie lautet nun:
=7*RUNDEN((7&1-B2)/7+E2;0)+176+MAX(INDEX((TAG(ZEILE(INDEX(B:B;7*RUNDEN((7&1-B2)/7+E2;0)+177) :INDEX(B:B;7*RUNDEN((7&1-B2)/7+E2;0)+177+6)))=D2)*{1;2;3;4;5;6;7};))
Gruß Werner
.. , - ...
AW: gut, leider geringfügig noch inkorrekt ...
19.06.2018 11:50:01
Daniel
Hi
naja, man kann darüber streiten, ob der 1.1.2016 in 2016 liegt oder in 2015.
ich würde 2016 für richtiger halten, aber wenn die Daten das anders vorgeben, muss man es in der Formel anpassen und zum Jahr 1 hinzuaddieren, wenn die KW = 53 ist und der Tag in der ersten Monatshälfte liegt:

... Datum(A1+UND(B115;C1=1));{...};B1) ...

Gruß Daniel
AW: so würde es gehen, damit aber ...
19.06.2018 12:08:49
neopa
Hallo Daniel,
... würde die Formel auch länger sein als mein Vorschlag. Allerdings hat sie die bereits erwähnten anderweitigen Vorzüge.
Zu meinen Feststellungen bzgl. des 2. Argument für KALENDERWOCHE() hattest Dich aber noch nicht geäußert.
Gruß Werner
.. , - ...
AW: so würde es gehen, damit aber ...
19.06.2018 12:20:58
Daniel
Hi
das 2. Argument der KW ist so zu wählen, dass zur es Berechungsmethodik der Datenquelle passt.
Daher ist mit 21 genauso falsch oder richtig wie ohne 21.
Die 21 für die deutsche Norm wurde glaube ich 2010 eingeführt davor müsste man die Rechenformel verwenden.
außerdem geht's bei Formeln ja nicht immer nur um die Länge, sondern manchmal auch um die Verständlichkeit.
Wie lange brauchst du um jemanden, der das Thema nicht kennt, deine Formel zu erklären und wie lange, um meine zu erklären.
Oder was passiert, wenn jemand fordert, wir müssen die Funktion internationalisieren und ggf von deutscher auf amerikanische Berechnungsnorm umschalten?
bei mir ändert man dann einfach den 2. Parameter in der KW-Funktion, aber wie geht das bei dir?
Gruß Daniel
AW: die 21 als 2. Argument ist notwendig ...
19.06.2018 13:16:51
neopa
Hallo,
... denn ohne diese würden oft falsche Werte ermittelt werden. Und nein, um die Formellänge geht es mir nicht vordergründig.
Und Argumente für oder gegen eine Lösung lassen sich immer vortragen, wenn man das möchte.
Gruß Werner
.. , - ...
AW: die 21 als 2. Argument ist notwendig ...
19.06.2018 13:58:42
Daniel
man musst wissen, nach welcher Norm das Quellsystem die KW berechnet.
Danach richtet sich der 2. Parameter der KW Funktion.
btw, wie müsste man deine Formel an die Amerikanische Norm anpassen?
Gruß Daniel
AW: gefragt war und ist was anderes ...
19.06.2018 14:08:54
neopa
Hallo,
... Du hast in Deiner SUMMENPRODUKT()-Formel überhaupt kein 2. Argument für KALENDERWOCHE() in der AGGREGAT() Formel schon. Und ohne dieses zweite Argument gibt es falsche Ergebnisse für das was der TE gefragt hat.
Gruß Werner
.. , - ...
AW: gefragt war und ist was anderes ...
19.06.2018 15:49:46
Daniel
sorry, ich habs vergessen. man denkt halt nicht immer an alles.
aber du erkennst den großen Vorteil meiner Formel:
du siehst sofort, dass die Ländereinstellung nicht passt und musst nur einen Parameter ändern.
in einer voll berechneten Formel wäre dir das nicht aufgefallen.
Gruß Daniel
AW: na ja, mir war schon auch aufgefallen, ...
19.06.2018 16:25:17
neopa
Hallo,
... dass Deine ursprüngliche Formeln nicht mit wechselhaften 2- bzw. 4-stelligen Jahreszahlen umgehen kann und teilweise ein Problem mit bestimmten Jahresenddaten hatte. Aber ersteres ist für den TE nicht notwendig und letzteres ist ja inzwischen von Dir behoben.
Gruß Werner
.. , - ...
AW: na ja, mir war schon auch aufgefallen, ...
19.06.2018 17:16:51
Daniel
naja wenn die Jahreszahlen mal 4 und mal 2-Stelleig in der gleichen Spalte auftauchen, dann ist das quellsystem in konsistent und man müsste da mal nachfragen.
sowas kommt eigentllich nicht vor, wenn die Daten derartig systematisch aufgebaut sind.
wenn doch, dann man ja das Datum immer noch als Text zusammenbasteln und mit "--" oder Wert() in ein echtes Datum umwandeln.
Gruß Daniel
AW: Datum aus Jahr, Monatstag und Kalenderwoche.
19.06.2018 06:50:44
laggiwon
Ihr seid echt der Hit!
Vielen lieben Dank für die schnelle und kompetente Hilfe und die vielen Vorschläge.
Habe mich jetzt für die kompakte Version von Josef B entschieden.
DANKE nochmal
Gruß Peter
Prüf mal die Formel genauer
19.06.2018 09:35:19
Daniel
Sie liefert ein falsches Ergebnis, wenn der Montag der KW noch im Vormonat des gesuchten Datums liegt:
Teste mal beispielsweise denn 1.2.2018 (2018 | 1 | KW05)
Gruß Daniel

405 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige