As I see it there are two problems to be addressed. The major one is that converting to a table turns the dates into text strings. To get a match you need to convert the search string before using MATCH. I have defined a name 'textDate' for this
=TEXT(date,"dd/mm/yyyy")
The other potential problem is that the final formula needs to be committed as an array with CSE. To avoid this, I again use a named formula. By defining the Boolean 'employee?' to refer to
= IF( (Results[Name]=name) * (Results[Employee ID'#]=ID), 1 )
The array calculation is performed before the worksheet implicit intersection takes place:
= IFERROR( INDEX( achieved, MATCH( 1, employee?, 0 ), MATCH( textDate, dateHdr, 0 ) ), 0 )
My apologies for messing with your formulas to such an extent but getting rid of direct cell referencing is the only way I can read what a formula is meant to be doing.