It does exactly what you asked for in your sample data. Did you actually try it or just look at it and not see MONTH and assume it wasn't right?
This bit finds the first column with an entry:
x,XLOOKUP(99999999,fm,D3:V3,"",-1),
If it's not doing what you want, then you need to provide a...
Assuming you have 365, try this:
=LET(d,D5:V24,p,FILTER(A5:C24,A5:A24=X2),
fm,BYCOL(d,SUM),
x,XLOOKUP(99999999,fm,D3:V3,"",-1),
HSTACK(p,FILTER(FILTER(d,D3:V3>=x),A5:A24=X2)))
What's your locale? Here in the UK it converts automatically.
You could try Data | Text to Columns > Next > Next > select DMY > Finish.
Attach a sample workbook.
For example, if you have Excel 2021 or newer, this in H10:
=LET(x,INDEX(C54:C69,MATCH($I1,$A54:$A69,0)),
IF(ISNUMBER(MATCH(x,{"H","O","L","I","D","A","Y"},0)),"HOLIDAY",x))