71 66 Bytes
Saved 5 bytes thanks to Taylor Raine
Aside: At the time of posting, this answer has the smallest byte count. That is baffling. Score one for Excel's date handling, I guess.
Input is in cell
A1. Output is wherever the formula is. Returns a number 1-4 for advent Sundays and a 0 for all other dates.
The first part calculates which advent Sunday an input is and does most of the heavy lifting.
("12/23/"&YEAR(A1)) finds Christmas Eve Eve (CEE) in the year of the input. We find Eve Eve hear because it saves us some extra bytes of adjustment later.
INT(~/7)*7 takes that date, divides by 7 (b/c 7 days per week), rounds it down, then multiplies it by 7. This finds the Saturday before CEE. If CEE is a Saturday, then it returns that date.
(INT(~/7)*7+1-A2)/7 adds one to get Sunday, subtracts the input, and divides by 7 to get the number of weeks between the input and the Sunday before Christmas. This may not be a whole number.
4-(~) subtracts that result from 4 to invert the result. I.E., the Sunday before Christmas needs to be the 4th Sunday, not the 1 week before.
Now that the heavy lifting is out of the way, we can examine the results. Note that using TRUE and FALSE values in math will treat TRUE = 1 and FALSE = 0. By multiplying various statements that will evaluate to either TRUE or FALSE, we can filter out undesirable results.
(LEN(a)=1) filters out any non-integers as well as negative integers. This removes every non-Sunday in the advent calendar and all dates before the first Sunday. This does not filter out the 0th Sunday but the end result will still be 0 so it works.
(a<5) filters out Sundays after the 4th Sunday.
(~)*(~)*a returns the value if it has passed both those filters. Otherwise, it returns 0.
In this screenshot, I have added a column to return the value of
a since that's so much of the calculation. I have also extended the data beyond the samples above to show some edge cases.