Excel. Weeknum function. #VALUE! error. Calendar - excel

Dear person. As you can see in the picture there is a #VALUE! error when it tries to show some weeknumbers.
Referring to the picture:
Nr. 1. I'm trying to figure out how to show the weeknumbers that have datenumbers in that week
Nr. 2. I'm trying to figure out how to show a blank cell for the rows with no datenumbers in that week
The workbook: https://www.dropbox.com/s/ed6dt022i0yz6py/Calendar.xlsx?dl=0
Help!:)

I think this is the one you want based on weeks from Monday to Sunday
=IFERROR(WEEKNUM(AGGREGATE(15,0,C17:I17,1),2),"")
I have chosen to use Aggregate because it will error out if there are no numbers in the range, so IFERROR will give a blank. You could just use MIN or MAX instead and test for the result being zero. You could also use LOOKUP or HLOOKUP. This might be the shortest way
=IFERROR(WEEKNUM(LOOKUP(99999,C17:I17),2),"")
The week starting with December 31st ('week 53') is really week 1 of 2019 so you could add a separate condition for this.
To fix the 'week 53' issue, I can't do any better than this rather long formula at present
=IF(COUNT(C17:I17)=0,"",IF(AND(MONTH(LOOKUP(9E+99,C17:I17))=12,C17<>"",I17=""),1,WEEKNUM(LOOKUP(9E+99,C17:I17),2)))
which says 'if it is the last week of December and at least one of the days in that week is empty, then the week is week one of the following year'.
This could be further modified to deal with an ISO year where week 1 is the first week containing a Thursday.

Related

Excel, trying to split rent for the number of days in a month, per month for the whole year

So I am trying to calculate rent for each month. The problem I am facing is with the fact that starting date and ending date could be in the middle of a month.
For example:
Rent = 10,000
Starting date = 15/04/2020
Ending date = 10/10/2020
I want my excel Sheet to split accordingly as below:
First sample row of the excel
In my excel sheet, I have different amounts for rent and various start/end dates.
This is what I have tried but failed miserably:
> =$F3/(12*DAY(EOMONTH(H$1,0)))*(IF(MONTH($C3)<=MONTH(H$1),IF(MONTH($C3)=MONTH(H$1),(EOMONTH($D3,0)-$D3),DAY(EOMONTH(H$1,0))),0))
Where F is where the RENT is, H1 is January, C3 is start date, D3 is end date. I'm hoping it to work when I autofill the formula across the whole sheet.
Please help!
#Hooded0ne I tried your formula for all examples in my sheet and there seems to be an issue for some cases:
When start date is 2019 and end date is 2020. This should only show rent till April.
Same case as above, December 2020 is only till the 14th, it should only calculate for the first 15 days
Blockquote
Does this work for you?
=MAX((MIN(EOMONTH(K1,0),$D$3)-MAX(K1,$C$3)+1)/DAY(EOMONTH(K1,0))/12*$F$3,0)
Edit: It should work for multiple years, if you have a specific example, please add it to your original post.

Auto populating the 31st day of a given month in excel

I am building a template for a data entry spreadsheet at work for some of the old-timers. The template that they will see will be columns of categories and the rows will be dates including the day of the week. I know how to auto-fill the date an day by drag and drop, but honestly some of these guys even screw that up. So, I am building this spreadsheet that auto populates the date and the day for the whole month based on entering the first day of the month that way its as simple as possible, but I am having trouble with the 31st day of some months. I don't want to have two different spreadsheets. Right now the code that I have is:
=EOMONTH(A5,0)
This works if it is the 31st day of the month, which is great, but if it is not a month that has 31 days it repeats the 30th day. I'd really like it to be an if statement, but I know my code is off because it always generates a FALSE.
Is =if(A5(M<2),"EOMONTH(A5,0)") heading in the right direction? It generates a #REF! reponse with that code.
Thank you for any input!
In A5 enter the date of the first day of the month. In A6 enter:
=A5 + 1
and copy downwards.
In A35 enter:
=IF(DAY(A34+1)=1,"",A34+1)
This assumes that you are making the date sequence by adding 1 to the cell above.
EDIT#1:
Put this in A6:
=IF(A5="","",IF(DAY(A5+1)<DAY(A5),"",A5+1))
and copy downwards through A35.
This will handle long months, short months, leap years, etc.
(this also has the advantage of maintaining the same formula for the entire set of cells)
You just need to add an IFERROR before the IF to fix the February problem:
=IFERROR(IF(DAY(A34+1)=1,"",A34+1),"")

Calculate the first week of year which starts from first Sunday of every Feb

I have an issue here. I want to calculate the week nummber of first sunday of business year. Where I work their calendar starts on February 1st. To calculate i have a column A2 in excel which has the date in mm/dd/yyyy format. I want to generate the corresponding fiscal week for the column.
example of my result set:
for 2/1/15 the week of year number should be 1
For 2/7/16 the week number of year should be 1
I tried the below formula, but its starting the week from the first day of the fiscal year and not the first sunday of the year.
=INT((A1-WEEKDAY(E9165)-DATE(YEAR(A1+7-WEEKDAY(A1))-(MONTH(A1)<2),2,1))/7)+2
Please help...
-Sandra
Assuming that your work years always start on the first sunday after February 1st:
=IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))
We first determine the week number of the date starting from the first Sunday of February. To do this I have used WEEKNUM()-WEEKNUM(02/01/SAMEYEAR) taking 1 day from the date to force week 1 as Excel begins counting from week 0 by default. Using IF() we state that if the outcome is 0 or less then add the result to 52, which will give us the correct result for dates in January as they produce negative values.
Edit - Very long formula but gives you the week of the quarter in Q1 W1 format:
=SUBSTITUTE(CONCATENATE("Q",INT(IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))/13)+(IF(INT(IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))-INT((IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))/13))*13)=0,0,1))," W",INT(IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))-INT((IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))/13))*13)),"W0","W1")
Apologies for the length, I tried multiple methods to try to find a neater solution, but this was all that I could get to work. It would be a lot neater if there were multiple columns used.
Use this formula:
=IF(A1>=IF(WEEKDAY(DATE(YEAR(A1),2,1),1)=1,DATE(YEAR(A1),2,1),DATE(YEAR(A1),2,7-WEEKDAY(DATE(YEAR(A1),2,1),1)+2)),ROUNDUP((A1-IF(WEEKDAY(DATE(YEAR(A1),2,1),1)=1,DATE(YEAR(A1),2,1),DATE(YEAR(A1),2,7-WEEKDAY(DATE(YEAR(A1),2,1),1)+2))+1)/7,0),ROUNDUP((A1-IF(WEEKDAY(DATE(YEAR(A1),2,1),1)=1,DATE(YEAR(A1)-1,2,1),DATE(YEAR(A1)-1,2,7-WEEKDAY(DATE(YEAR(A1)-1,2,1),1)+2))+1)/7,0))
Way late to the party but was looking for the answer and found this thread. Ended up play around with the function myself and it's much easier to just deduct the dates; =WEEKNUM("date"- days you wish to offset)
Ex; If cell A1 holds my date, 2/1/2021 I wish to convert; =WEEKNUM(A1-31) result "1".

Conditional format of date where 3 working days greater than cell value

I am trying to adapt a number of forum posts and previous stack questions like this.
Let's say I have a date Column A2, A3, A4 etc.
I want to be able to utilize the WEEKDAY function to evaluate my condition when only in a Weekday and also 3 days greater than the date in Cell A(x).
So far my attempts have failed or I have not got the results I want. Excel is not my strongest point when it comes to conditional formula formatting.
I think it may be something like:
=WEEKDAY(A$2,2) <=5 AND 'My Cell Date' > 3 Days WHERE those 3 days are weekdays.
Also if it is possible, I want it to work like:
If day 1 of 3 is Thursday, day 2 of 3 is Friday and day 3 of 3 is Monday then apply formatting.
Could anyone help me out with this one please?
Edit not from OP to copy clarification from comments:
If the today date is 3 working days greater than the cell date change to red.
Say A2 has a received date and B2 has a completed date. The completed date is my target. Is it 3 working days greater than received.
Was not quite certain of the requirement (but seem to have hit upon an acceptable solution!):
Use =NETWORKDAYS(A2,B2)>2 under Format values where this formula is true: under Use a formula to determine which cells to format in Conditional Formatting.
NETWORKDAYS
Returns the number of whole working days between start_date and end_date. Working days exclude weekends and any dates identified in holidays.
The syntax is:
NETWORKDAYS(start_date,end_date,holidays)
Dates should be entered by using the DATE function, or as results of other formulas or functions.

Excel function to determine the last Friday in a month

I'm looking for an Excel function to return the last Friday in a month for a given date.
ie: Any date in the month as input will give the date of the last Friday as output.
14-July-09 should give 31-July-09
7-March-05 should give 35-March-09
Building on #Toomas answer above, I had to make some amendments for Excel 2007, but came up with the following:
=EOMONTH(A1,0)-MOD(WEEKDAY(EOMONTH(A1,0))+1,7)
Which is assuming that the WEEKDAY returned for Friday is 6 and then applying a shifted MOD 7 to achieve the correct day.
Try this formula:
=IF(WEEKDAY(EOMONTH(A5;0);16)=7;EOMONTH(A5;0);EOMONTH(A5;0)-WEEKDAY(EOMONTH(A5;0);16))
Enter to A5 date value of which you are looking for the last Friday in a month.
The following formula achives this for a date in cell A1:
=DATE(YEAR(A1),MONTH(A1)+1,0)+MOD(-WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0),2)-2,-7)
I came here looking for the formula to get the most recent Friday in the past which turned out to be =TODAY()-WEEKDAY(TODAY())-1
In case anyone needs to do this for next year (or future years):
=EOMONTH(DATE(YEAR(TODAY())+1,MONTH(TODAY()),1),0)-MOD(WEEKDAY(EOMONTH(DATE(YEAR(TODAY())+1,MONTH(TODAY()),1),0))+1,7)
Here's one that will show the last Friday of the current month.
And if the date is in the past it will show you next month's last Friday.
And if it's December right now, it'll show you next year's January's Friday.
=IF(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)+MOD(-WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-2,-7)>=TODAY(), DATE(IF(MONTH(TODAY())+1>12,YEAR(TODAY()+1),YEAR(TODAY())),MONTH(TODAY())+1,0)+MOD(-WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-2,-7), DATE(IF(MONTH(TODAY())=12,YEAR(TODAY())+1,YEAR(TODAY())),MONTH(IF(MONTH(TODAY())=12,1,MONTH(TODAY())))+1,0)+MOD(-WEEKDAY(DATE(IF(MONTH(TODAY())=12,YEAR(TODAY())+1,YEAR(TODAY())),MONTH(IF(MONTH(TODAY())=12,1,MONTH(TODAY())))+1,0),2)-2,-7))
You can try
=DATE(YEAR(A1),MONTH(A1)+1,1)-1+CHOOSE(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,1)-1),-2,-3,-4,-5,-6,0,-1)
to find the last friday of the month. Assumes A1 has the date.
Hey the formatting is outdated so ill show what I came up with:
=EOMONTH(A1;A2)-(WEEKDAY(EOMONTH(A1;A2);15)-1)
[A1] is an interval of months later, from [A2] the stating date, that the result date should be.
We have some equipment that need maintenance last Friday of the month, an number of months since last Maintenace.
EOMONTH(A1;A2): we find the date, of the last day, of target month.
WEEKDAY([Date];15): assign a number for day of the week.
[15] makes Friday the value 1 and Thursday the value 7.
so if the last day of the month is Friday, the calculation would be:
[Date]-(1-1) = [Date] therefor the date won't change.
[Date] in my original code example, is the last day of the target month: [A2] date + [A1] number of months later.
if the last day is Wednesday, we want it to subtract 5 days: [Date]-(6-1) = [Date]-5
As a sidenote:
=WORKDAY(A2+1;-1;[hollydays])
will round a date back to the earlier Workday if it lands in a weekend or holyday
[holyday] can be an area of cells with predefined dates to skip eg: [$C$1:$C$20].
$ is so the area won't change when you extend the function to other cells.
if you don't care about holydays use =WORKDAY(A2+1;-1)
Awesome! Basically, like trying to find the first or second Monday of the month,
=DATE(TheYear,5,1)+CHOOSE(WEEKDAY(DATE(TheYear,5,1)),1,0,6,5,4,3,2)
which returns the first Monday of the month, in this case May
but to find the last weekday of the month, in the formula, you start with the next month and subtract
=DATE(TheYear,6,1)-1+CHOOSE(WEEKDAY(DATE(TheYear,6,1)),-6,-5,-4,-3,-2,-1,0)
which returns the last Monday of May
I have a cell that I named TheYear, in which I enter the year I'm working with, but you can point to whatever cell you have the year you want (e.g. A1).
I don't know why the pointers to the days of the week are in reverse order but to find the day (e.g. Tuesday instead of Monday), change the order of those numbers but they have to stay in order. For example, 4th Thursday of November:
=DATE(TheYear,11,1)+21+CHOOSE(WEEKDAY(DATE(TheYear,11,1)),4,3,2,1,0,6,5)
=EOMONTH(TODAY(),0)-WEEKDAY(EOMONTH(TODAY(),0))-1
This gives the last Friday of this month. You can replace both instances of Today() with any date you like or a cell reference that has a date to get the last Friday in any other month.
=WORKDAY.INTL((EOMONTH(A4,0)+1),-1,"1111011")

Resources