This got much easier 5 yrs later. Its a single cell formula producing a new spilled table:
=GROUPBY(Table1[[#All],[Pers]],Table1[[#All],[App_IDs]],ARRAYTOTEXT)
Or without producing the headers it may be easier to understand:
=GROUPBY(Table1[Pers],Table1[App_IDs],ARRAYTOTEXT)
Looks like this: