Summary

To identify when a date is between two given dates, you can use the IF function with the AND function. In the example shown, the formula in C5, copied down, is:

=IF(AND(B5>=start,B5<=end),"x","")

Where start (E5) and end (E8) are named ranges. As the formula is copied down, the formula returns "x" if the date in column B is between the start and end dates. Otherwise, the formula returns an empty string, which looks like an empty cell in Excel.

Generic formula

=IF(AND(A1>=start,A1<=end),"x","")

Explanation 

The goal is to identify dates in column B that fall between a given start date and end date. The start and end dates are exposed as inputs on the worksheet that can be changed at any time, labeled "Start" and "End" in the example shown.

Named ranges

For convenience, both start (E5) and end (E8) are named ranges that can be used directly in the formula. If you prefer not to use named ranges, use absolute references like $E$5 and $E$8 to prevent these references from changing as the formula is copied down the table.

=IF(AND(B5>=$E$5,B5<=$E$8),"x","")

Excel dates

Excel dates are just large serial numbers and can be used in any numeric calculation or comparison. This means we can compare one date to another date with a logical operator like greater than or equal (>=) or less than or equal (<=) like any other number.

AND function

 The AND function returns TRUE if all arguments are TRUE. For example, if cell A1 contains "Red" and B1 contains 10, then:

=AND(A1="Red",B1>5) returns TRUE
=AND(A1="Red",B1>12) returns FALSE
=AND(A1="Blue",B1>5) returns FALSE

In this example, the main task is to construct a logical test to find dates that fall between the start and end dates. The first comparison is against the start date. We want to check if the date in B5 is greater than or equal (>=) to the date in cell E5, which is the named range start:

=B5>=start

The second expression needs to check if the date in B5 is less than or equal (<=) to the end date in cell E5:

=B5<=end

Since we want to test if both conditions are TRUE at the same time, we use the AND function like this:

=AND(B5>=start,B5<=end) // returns TRUE

For cell B5, the result is TRUE, because 11-Jan-2022 is greater than 1-Jan-2022 AND is less than 30-Apr-2022. For cell B6 however, the result is FALSE. Although 1-May-2022 is greater than  1-Jan-2022, it is not less than 30-Apr-2022:

=AND(B6>=start,B6<=end) // returns FALSE

To summarize: the AND function will return TRUE when the date in column B is greater than or equal to start (E5) AND less than equal to end (E8) If either test fails, the AND function will return FALSE. We now have the logical test we can use in the IF function.

IF function

The IF function runs a logical test and returns one value for a TRUE result, and another value for a FALSE result. The generic syntax for IF looks like this:

=IF(logical_test,if_true,if_false)

We start off by placing the expression we developed above inside the IF function as the logical_test argument:

=IF(AND(B5>=start,B5<=end),

Next, we add a value_if_true argument. In this case, we  want to return an "x" when a date is between two dates, so we add "x" as a text value:

=IF(AND(B5>=start,B5<=end),"x",

If the date in B5 is not between the start and end dates, we don't want to display anything, so we use an empty string ("") for value_if_false. The final formula in C5 is:

=IF(AND(B5>=start,B5<=end),"x","")

As the formula is copied down, the formula returns "x" if the date in column B is between the start and end date. If not, the formula returns an empty string (""), which looks like an empty cell in Excel. The values returned by the IF function can be customized as desired.

Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.