still haven't seen what outcome you actually require but to determine the relevant record from the first table in relation the date in the second table you need a query something like below. No names so I'll call them T1 and T2
Code:
SELECT *
FROM T1 INNER JOIN T2 ON T1.W_Name = T2.W_Name
WHERE T1.[Allocation Date]=(SELECT MAX([allocation date]) FROM T1 A WHERE A.[allocation Date]<T2.[yourdate] AND A.W_Name=T2.W_Name)
This uses a subquery and looks like you have a lot of data so make sure the name and date fields are indexed otherwise it could be quite slow.
Not clear whether a T2 record with the same date as the T1 record should have that record or not, I've assumed not. If it should be used, change the < to <= in the criteria
Edit: query edited to include additional criteria