The original suggestion satisfied the original criteria I believe.
It seems you're now saying that the revised criteria is such that :
- "Past Due": any Date Prior to Today
- "Current Month": any Date between Today and end of Current Month
- Remaining output as before
If the above is indeed the case I would say that given the variance in units of comparison it would be simplest to add a pre-emptive IF to handle prior dates
Sub Example()
With Sheets("Sheet1")
With .Range(.Cells(2, "N"), .Cells(.Rows.Count, "N").End(xlUp))
.Offset(, 1).Value = .Parent.Evaluate _
("IF(ISNUMBER(" & .Address & ")," & _
"IF(" & .Address & "<TODAY()," & _
"""Past Due""," & _
"LOOKUP(" & _
"(TEXT(" & .Address & ",""yyyy"")*12+TEXT(" & .Address & ",""mm""))" & _
"-" & _
"(TEXT(TODAY(),""yyyy"")*12+TEXT(TODAY(),""mm""))," & _
"{0,1,2,3}," & _
"{""Current Month"",""CM+1"",""CM+2"",""Beyond""}" & _
")" & _
")" & _
","""")")
End With
End With
End Sub
Bookmarks