Yes, a user defined function would be much cleaner.
Added advantage: You would not have to type such a long formula everytime.
You could use the following code
Function JoinCells(cell1 As Range, ParamArray Addr()) As String
JoinCells = cell1.Text
If Len(JoinCells) > 0 Then JoinCells =...