You can use a Case Statement (IF will work as well here, but I prefer to always use Case) to check if the value exists before concatonating it. For example:
(I have taken an easy option here by assuming that the Zip_Category field always exists)
Case ( Zip_Size = "" ; "" ; ", " & Zip_Size )
Case ( Zip_Length = "" ; "" ; ", " & Zip_Length )
Case ( Zip_opening = "" ; "" ; ", " & Zip_opening )
Case ( Zip_Color = "" ; "" ; ", " & Zip_Color )
Here's a simpler way to do the same thing:
Substitute ( List ( Zip_Category ; Zip_Size ; Zip_Length ; Zip_opening ; Zip_Color ) ; ¶ ; ", " )
List will automatically drop out the empty fields and thus the extra commas don't appear when the returns get changed into commas.
Learned it from Raybaudi here in this forum.