Check if two ranges of dates overlap [Excel Formulas]
While preparing a project plan, I had a strange problem. I wanted to highlight all the project tasks that fall with-in a certain date range. At the lowest level, the problem is like this:
There are 2 ranges of dates (a,b) and (x,y) and I want to know if they overlap (ie at least one date common between a,b and x,y)
The formula for testing such a thing seemed tricky at first. So I drew the conditions on paper to get clarity on what we should test. Evidently, there are 4 ways in dates (a,b) can overlap with dates (x,y) as shown below:
Now, we can test for the overlap condition using a formula like this:
If x is between a and b
or a is between x and y
else do not overlap
As you know, there is no formula in excel like isbetween(). So we have to break it up to 2 conditions and an AND() Formula. Finally the formula becomes,
=if(or(and(x>=a,x<=b),and(a>=x,a<=y)),"Overlap","Do not overlap")
Now, it seemed like quite a big formula for testing if 2 ranges of dates overlap.
So, I continued my quest for even shorter formula.
After sometime, I realized that if we test for non-overlap instead of overlap, we can write a shorter formula.
Do not understand? Let me explain.
While there are 4 ways in which (a,b) can overlap with (x,y), there are only two ways in which (a,b) cannot overlap with (x,y). See this to understand:
Now, testing above conditions is very straight forward in excel.
the formula becomes,
=if(or(y<a,b<x),"Do not overlap","Overlap")
The formula is much shorter and easy to maintain.
I was able to use it to test if a set of tasks in the project plan are running between given dates (for eg. next week). All is well in the end.
How do you test overlap conditions?
Do you ever have to test overlap conditions? What kind of formulas have you used? Please share your formula tips & tricks using comments.
My name is Chandoo. Thanks for dropping by. My mission is to make you awesome in Excel & your work. I live in Wellington, New Zealand. When I am not F9ing my formulas, I cycle, cook or play lego with my kids. Know more about me.
Thank you and see you around.
Leave a Reply
|« Updates on Website, Office 2010 Contest||Get Stock Quotes using Excel Macros [and a Crash Course in VBA] »|