One warning first, please be advice that if the first row or any other row in the B$1:B$500 range is blank (not counting the last cells that are blank, just the B1 or the ones between the actual data) you'll get wrong values because the formula month("blankcell")=1 (just learned that); so if a blank cell is before any other january value all january values will return the address of the blank cell; if the blank cell is after any other january value then the blank cell will return the address for the first january value.

="B"&MATCH(IF(ISNUMBER(B2);MONTH(B2);"NA1");IF(ISNUMBER(B$1:B$500);MONTH(B$1:B$500);"NA2");0)

that formula will resolve that problem; now blank cells or cells with text will return the #N/A error...

=IFNA("B"&MATCH(IF(ISNUMBER(B2);MONTH(B2);"NA1");IF(ISNUMBER(B$1:B$500);MONTH(B$1:B$500);"NA2");0);"")

use this other if instead of the #N/A error you want it to return the text string "" (blank).

Explanation: now the value to be matched is determined by an if function that checks if the cell is a number, if it is a number then returns the month, if not then return the text "NA1"... now the array of months is determined in the same way of the match value, if it is a number then adds the month to the array, if not then it adds "NA2"; this way only actual number will find a match... notice that using "NA1" in one and "NA2" in the other will prevent non number cell from finding a match.

-------------------

Warning two... notice that this approach only checks for the month, so if you have dates between different years, you'll need this other formula:

="B"&MATCH(IF(ISNUMBER(B2);MONTH(B2)&YEAR(B2);"NA1");IF(ISNUMBER(B$1:B$500);MONTH(B$1:B$500)&YEAR(B$1:B$500);"NA2");0)

this one checks the month and year...

Explanation: The formula is the same as the ones above, but instead of just looking for (value to be matched) and looking in (array) for the month, now it checks for a text string consisting of "monthyear" (for example if the B cell is 01/08/2013 the formula will search for 82013, thus only finding other "82013" (august 2013) values)...

------------------

Now regarding your question:

Yes, quoting you "the first occurence of the most smallest date"; if the data isn't in chronological order then the formula will return the first value found for the month.

This will work if the data isn't in cronological orden

=MIN(IF(MONTH(B2)=MONTH($B$1:$B$500);$B$1:$B$500;"NA3"))

This will find the first date (minimum, thus the min function) for each month (for the array containing the dates of the month)... (Im only posting this so you can see the evolution of the actual final formula...) This has two problem, one, if the range "$B$1:$B$500" has any text then they all return a #VALUE! error... including "B1" (the header, I guess)... and if there is any blank then the month will return "0" and will ended up in a "00/01/1900" date...

=MIN(IF(IF(ISNUMBER(B1);MONTH(B1);"NA1")=IF(ISNUMBER($B$1:$B$500);MONTH($B$1:$B$500);"NA2");$B$1:$B$500;"NA3"))

This will find the first date for each month... without the text (#VALUE!) error, but still giving the "0" bad date...

This next step is irrelevant for you, since you want the address and not the actual date; if you want the actual date then using this:

=IF(MIN(IF(IF(ISNUMBER(B1);MONTH(B1);"NA1")=IF(ISNUMBER($B$1:$B$500);MONTH($B$1:$B$500);"NA2");$B$1:$B$500;"NA3"))>0;MIN(IF(IF(ISNUMBER(B1);MONTH(B1);"NA1")=IF(ISNUMBER($B$1:$B$500);MONTH($B$1:$B$500);"NA2");$B$1:$B$500;"NA3"));"")

Will solve the "0" problem... is just an if function checking if the result is bigger than "0" if yes then returns the result, if not then returns "" (blank)...

Now back to your actual problem..

That last step is not needed for you since "0" doesn't (or at least shouldn't exist in your "$B$1:$B$500" range)... so all that is needed now is match...

="B"&MATCH("last formula";$B$1:$B$500;0)

so your final formula would be:

="B"&MATCH(MIN(IF(IF(ISNUMBER(B2);MONTH(B2);"NA1")=IF(ISNUMBER($B$1:$B$500);MONTH($B$1:$B$500);"NA2");$B$1:$B$500;"NA3"));$B$1:$B$500;0)

again the text and blanks will return the #N/A error, if needed, just

=IFNA("formula above";"")