In the attached a user defined function:
Function LatestDate(Predecessor, ActivityColumn, FinishColumn)
Predecessors = Split(Predecessor.Value, ",")
For Each P In Predecessors
LatestFinish = Application.Max(LatestFinish, Application.Index(FinishColumn, Application.Match(Application.Trim(P), ActivityColumn, 0)))
Next P
LatestDate = LatestFinish
End Function
used in cells D3:D29
Since these formulae are dependent on results of these same formulae on other rows, the sheet may automatically calculate each formula more than once - but you probably won't notice this.