It took me quite a lot of time to do this one. Was trying to match through the company name position between blanks/nulls, but that was all very inconsistent. Finally gave up and did it with regex as everyone else.
I first replaced the solitary "." fields, then individually isolated the Fax, Phone, Website and Notes fields using Regex:
I then transposed the data to create a single value column with these fields and used the Find and Replace tool to remove them from Field_1. This left Field_1 containing only Company Name and Address: I then used Regex to create the Address field and a simple replace formula to isolate the company name. It was then a simple method of creating a record id and summarizing using the record id and company name as the group and the longest values of each column as the values.