If you have only one phone number per phone number type, I would push this processing back to the server and do away with the Crystal formulas. Assuming that you have three phone number types, 'H', 'W', 'P', add your phone number table to the report three times and give it three different aliases. For the first instance add a selection formula PHONE_TYPE='H', for the second, PHONE_TYPE='W', and PHONE_TYPE='P' for the third. Join each of the phone number tables to the person table as left outer joins. Now you will have a single record per person with the three phone numbers (or null) in each record.
This will not work if you have the possibility of multiple phone numbers per phone number type.