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:
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.
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).
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)