Floating Dates

There are 2 types of floating dates.

To get the second Sunday in May use the below formula, where cell A1 is the year (2004), cell A2 is 5 (May) and cell A3 is the day (1 for the first Sunday, 2 for the first Monday...the maximum number will be 35 which be equal to the fifth Saturday (assuming the month actually has 5 Saturdays)
=IF(MONTH(DATE(A1,A2,1))<>MONTH(IF(WEEKDAY(DATE(A1,A2,1)-(WEEKDAY(DATE(A1,A2,1))-A3))<WEEKDAY(DATE(A1,A2,1)),DATE(A1,A2,1)+(A3-WEEKDAY(DATE(A1,A2,1)))+7,DATE(A1,A2,1)-(WEEKDAY(DATE(A1,A2,1))-A3))),"",IF(WEEKDAY(DATE(A1,A2,1)-(WEEKDAY(DATE(A1,A2,1))-A3))<WEEKDAY(DATE(A1,A2,1)),DATE(A1,A2,1)+(A3-WEEKDAY(DATE(A1,A2,1)))+7,DATE(A1,A2,1)-(WEEKDAY(DATE(A1,A2,1))-A3)))

Last Weekday

If you wanted the last weekday of a month, use this formula (This formula calculates as above except there are only 7 days to choose from, Sunday = 1, Monday = 2.... Saturday = 7)
=IF(A2<>MONTH(DATE(A1,A2+1,0)-(WEEKDAY(DATE(A1,A2+1,0))-A3)),DATE(A1,A2+1,0)-(WEEKDAY(DATE(A1,A2+1,0))-A3)-7,DATE(A1,A2+1,0)-(WEEKDAY(DATE(A1,A2+1,0))-A3))

Improved!

A shortened version of the above formula for the last weekday was kindly suggested by Vicente Soler.

=DATE(A1,A2+1,0)-WEEKDAY(DATE(A1,A2+1,0))+A3+IF(WEEKDAY(DATE(A1,A2+1,0))<A3,-7,0)

Thanks Vicente!