Excel Office

Excel How Tos, Tutorials, Tips & Tricks, Shortcuts

Get first Monday before any date in Excel

To find the first Monday before any date you can use a formula based on the WEEKDAY function.

Formula

=date-WEEKDAY(date-2)

In the example shown, the formula in C6 is:

=B5-WEEKDAY(B5-2)

Explanation

If you imagine you have any random date and want to look back in time to find the nearest Monday, you can see that you will need to “roll back” a specific number of days, depending on the day of week (e.g. Mon, Tue, etc) of the starting date. If the date is a Monday, you’ll need to drop back 7 days, if the date is a Tuesday, you’ll need to drop back 1 day, and so on. The table below shows the adjustment needed for each day of the week.

Worked Example:   How to randomly assign data to groups in Excel
Date Days to drop back
Monday 7
Tuesday 1
Wednesday 2
Thursday 3
Friday 4
Saturday 5
Sunday 6

The formula is based on the fact that Monday is 2 in Excel’s default scheme, where weeks begin on Sunday. The “roll back” is calculated by getting the weekday value of the date 2 days before the given date, and subtracting this value from the date. So, assuming a date of June 4, 2015 (a Thursday) in cell A1, the formula is solved as follows:

=A1-WEEKDAY(A1-2)
=June 4,2015-WEEKDAY(June 4,2015-2)
=June 4,2015-WEEKDAY(June 2,2015)
=June 4,2015-3
=June 1,2015

An alternative

If you find the weekday adjustment confusing and non-intuitive, you use an alternative formula that uses the CHOOSE function with hard-coded adjustment values:

=B5-CHOOSE(WEEKDAY(B5),6,7,1,2,3,4,5)

This formula uses WEEKDAY to get an index for the day of week, and CHOOSE to fetch the correct roll back. One advantage of this approach is that CHOOSE allows arbitrary values for each day of the week. This is handy if you don’t want to roll back if the date is already Monday. In that case, you can supply zero as the roll back number for when WEEKDAY returns 2 (Monday).

Worked Example:   Highlight dates in the next N days in Excel

Monday previous to today

If you need to find the Monday previous to today, just use the TODAY function for date:

=TODAY()-WEEKDAY(TODAY()-2)

Leave a Reply

Your email address will not be published. Required fields are marked *