Explanation
Excel dates are just serial numbers, so you can calculate durations by subtracting the earlier date from the later date. This is what happens at the core of the formula here:
MIN(end,C6)-MAX(start,B6)+1
In the code above, we are simply subtracting the earlier date from a later date. To figure out what dates to use for each date range comparison, we use MIN to get the earliest end date, and MAX to get the latest end date.
We add 1 to the result to make sure we are counting "fence posts" and not "gaps between fence posts" (analogy from John Walkenbach in the Excel 2010 Bible).
Finally, we use the MAX function to trap negative values and return zero instead. Using MAX like this is a clever way to avoid using the IF function.