No problem...here's how it works...
Row returns the row # of a cell reference
This
DATE(1,ROW($A$1:$A$12),1) - DATE(Year,Month,Day)
Creates an ARRAY of Dates using Year 1 or 1901 (doesn't matter what year), Day 1 and the month corresponding to each row # 1-12.
So the array contains 12 dates {Jan 1 1901, Feb 1 1901, Mar 1 1901, etc, Dec 1 1901}
That array is created twice in the formula
So that breaks the formula down to this
=LOOKUP(2,1/ISNUMBER(FIND(TEXT({Jan 1 1901, etc, Dec 1 1901},"mmmm"),A1)),TEXT({Jan 1 1901, etc, Dec 1 1901},"mmmm"))
The text function turns those dates into each date's month name
TEXT({Jan 1 1901, etc, Dec 1 1901},"mmmm")
So the array now contains just the month names
{"January","February","March", etc, "December"}
So now the formula is broken down to
=LOOKUP(2,1/ISNUMBER(FIND({"January","February",etc,"December"},A1)),{"January","February",etc,"December"})
Here's where it get's more complicated..
Find searches for each month name (January,February,et) in the cell A1. And returns the position # where it was found.
find creates an array holding all the position numbers where each one is found.
If the month is not found, find returns an error #VALUE!
so you now have an array of either #VALUE! or some position # where the month was found
Say A1 is
Credit Interest November 2009
November is at the 17th character
So find is returning this array
{#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,17,#VALUE!}
So the formula is now
=LOOKUP(2,1/ISNUMBER({#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,17,#VALUE!}),{"January","February",etc,"December"})
ISNUMBER returns a TRUE or FALSE response based on the test if each value is a number or not.
Errors are not numbers
so now your formula looks like this
=LOOKUP(2,1/{FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE},{"January","February",etc,"December"})
When doing a mathematical operation on a True or False value like 1/FALSE or 1/TRUE, the TRUE/FALSE is converted to 1/0 1=True, 0=False
So it's now
=LOOKUP(2,1/{0,0,0,0,0,0,0,0,0,0,1,0},{"January","February",etc,"December"})
Now it's going to create an array of the result of 1 Devided by each number in the array.
1/1 = 1
1/0 = #DEV/0!
so now the formula is
=LOOKUP(2,{#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,#DEV/0!,1,#DEV/0!},{"January","February",etc,"December"})
Now lookup wants to find the closest match for 2 in that array.
The closest match is 1, which is in the 11th position of the array
So it returns the 11th postion of the 2nd array = November.
Hope that helped, and hasn't fried your brain too much...