Try this,
I2
=IF(COLUMNS($I:I)<=COUNT(IF($A$2:$A$100<>"",FIND($A$2:$A$100,$D2))),INDEX($A:$A,MOD(AGGREGATE(15,6,(IF($A$2:$A$100<>"",FIND($A$2:$A$100,$D2))*10^6+ROW($A$2:$A$100))/(IF($A$2:$A$100<>"",FIND($A$2:$A$100,$D2)>0)),COLUMNS($I:I)),10^6)),"")
copied down and across.
Bookmarks