2017-12-26 10 views
1

Ich versuche die Wochennummer eines bestimmten Quartals basierend auf dem Datum zu erhalten.
Im Moment habe ich diese FormelWochennummer eines Quartals

=1+(WEEKNUM(EDATE(Y4,-1)))-(WEEKNUM(DATE(YEAR(EDATE(Y4,-1)), 
LOOKUP(MONTH(EDATE(Y4,-1)),{1,4,7,10}),1))) 

Aber für Januar sollte es mir 1 sein zu geben, aber es gibt mir 10. Irgendwelche Vorschläge?

+0

Wenn Sie ein Datum im Januar wählen, geht es zurück bis Dezember. 12 in Ihrem Lookup-Array ergibt 10 als Ergebnis. Vielleicht sollten Sie anstelle von "EDATE" 'EOMONTH (Y4, -1) + 1' verwenden, damit Sie den 1. des aktuellen Monats für Ihre Berechnung betrachten. – SeanC

+0

Wenn ich versuchte, dass ich" eine Zahl größer oder gleich wählen – Falcor

+0

Ich habe eine Antwort geschrieben, aber, wirklich, ich schätze - Sie sollten einige spezifische Beispiele angeben - Sie sagen "Januar", sicherlich erwarten Sie nicht die gleiche Woche Nummer für den gesamten Januar? –

Antwort

1

Wie erwarten Sie dies am Anfang zu arbeiten und Ende des Viertels?Die Standardfunktion WEEKNUM startet jedes Jahr am 1. Januar in der ersten Woche und Woche 2 beginnt am nächsten Sonntag nach dem 1. Januar.

Angenommen, Ihre viertel Woche Zahlen sollten auf die gleiche Weise funktionieren, dh Woche 1 beginnt am 1. Januar/April/Juli/Oktober und Woche 2 beginnt am nächsten Sonntag dann das ist eigentlich äquivalent zu Sonntage seit 6 Tagen zu zählen zurück in das vorherige Quartal.

können Sie tun das, indem NETWORKDAYS.INTL Funktion, dh mit dieser Formel:

=NETWORKDAYS.INTL(EOMONTH(Y4,MOD(1-MONTH(Y4),-3)-1)-5,Y4,"1111110")

Format Ergebnis als Zahl ohne Dezimalstellen

NETWORKDAYS.INTL Funktion in Excel 2010 und späteren Versionen verfügbar - für ältere Versionen von Excel können Sie die gleichen Ergebnisse mit dieser Formel erhalten:

=INT((13-WEEKDAY(Y4)+Y4-EOMONTH(Y4,MOD(1-MONTH(Y4),-3)-1))/7)

+0

I Ich rate auch, als ich die Antwort gepostet habe, aber meine Antwort basiert auf tatsächlichen Wochenzahlen, die sie durch 13 geteilt haben, und auf der Annahme, dass diese Woche 53 auch Woche 1 ist. Trotzdem schlägst du mich auf das Raten :) – L42

0

Dies ist ziemlich interessant, da es sich mit dem Jahr ändert und sich mit dem Wochentag ändert, der "Start" der Woche ist. Wenn also ein Viertel am Samstag beginnt und die Woche an einem Samstag beginnt, ist die gesamte Woche die 1. Woche. Wenn es jedoch an einem Sonntag beginnt, ist Woche 1 nur einen Tag lang und Woche 2 beginnt am Sonntag.

Die erste Frage, die wir haben, ist, welcher Tag ist es?

=DayCheck

Außerdem werde ich den Beginn eines jeden Quartals nennen die folgenden:

Q1Start = Date(Year(DayCheck),1,1) 
Q2Start = Date(Year(DayCheck),4,1) 
Q3Start = Date(Year(DayCheck),7,1) 
Q4Start = Date(Year(DayCheck),10,1) 

Die nächste Frage ist, was ist der erste Tag der Woche? Wir haben etwas Kontrolle über die Weekday-Funktion. Um es einfach zu halten, ist der Sonntag der Anfang der Woche.

Ok, das ist unser Tag. Als nächstes, welches Viertel ist es?

`Quarter=ROUNDDOWN(MONTH(O16)/4,0)+1` 

Dies gibt uns 1 für Q1, 2 für Q2 usw.

Welcher Tag der Woche ist es jetzt?

=WEEKDAY(DayCheck,1) 

Ok, und jetzt, in welcher Woche sind wir?

=WEEKNUM(DayCheck,1)

Ich werde es in einer nicht sehr eleganten Art und Weise zusammen stellen. Ich bin mir sicher, dass es einen besseren Weg gibt.

=(Quarter=1)*((Weeknum(DayCheck)-WeekNum(Q1Start)+1)+(Quarter=2)*((Weeknum(DayCheck)-WeekNum(Q2Start)+1)+(Quarter=3)*((Weeknum(DayCheck)-WeekNum(Q3Start)+1)+(Quarter=4)*((Weeknum(DayCheck)-WeekNum(Q4Start)+1) 
0

Try this:

=CHOOSE((MOD(WEEKNUM(Y4),13)=0)+1,WEEKNUM(Y4)-(ROUNDDOWN(WEEKNUM(Y4)/13,0)*13),13) 

Dies wird die Nummer der Woche zu einem bestimmten Zeitpunkt innerhalb eines Viertels erhalten.
Ich habe dies in einer meiner Anwendungen verwendet, so dass Sie es möglicherweise auch verwenden können. HTH.

Hinweis: Wenn Sie andere ersten Tag verwenden als Sonntag, dann stellen Sie die WEEKNUM Formel.

0

(Erweitern von Kommentar)
Wenn Sie ein Datum im Januar wählen, geht es zurück bis Dezember. 12 in Ihrem Lookup-Array ergibt 10 als Ergebnis. Vielleicht statt EDATE, sollten Sie EOMONTH verwenden (Y4, -1) +1, so dass Sie am 1. des aktuellen Monats suchen Sie nach Ihrer Berechnung

=1+(WEEKNUM(EOMONTH(Y4,-1)+1))-(WEEKNUM(DATE(YEAR(EOMONTH(Y4,-1)+1), LOOKUP(MONTH(EOMONTH(Y4,-1)+1),{1,4,7,10}),1))) 
Verwandte Themen