For every instance of a customer buying a product I need to figure out when that customer previously bought that product. I've a solution that works using array formulas:
{=MAX(IF(($D$3:$D$15 = [@Product])*($C$3:$C$15=[@Customer]) * ($E$3:$E$15<[@Date]),$E$3:$E$15,FALSE))}
and I like it because it doesn't require that the data be sorted (I wanted to avoid that prerequisite) but I am not totally happy about it because the formula includes cell ranges (e.g. $D$3:$D$15) and hence if and when new transactions are added to the source data I'll need to update the formula.
A worked example is here on OneDrive.
Can anyone figure out a better way of doing this that can do away with those ranges in the array formula?

