your conditions are looking for the cell to contain just "&" or "," :-
=IF(FIND(",",B4&",")=FIND("&",B4&"&"),TRUE,FALSE)
This avoids a not found error,and can only be true if the string contains neither a , or a &
combining these :-
=IF(FIND(",",B4&",")=FIND("&",B4&"&"),B4,IF(FIND(",",B4&",")<FIND("&",B4&"&"),LEFT(B4,FIND(",",B4&",")-1)&", "&TRIM(SUBSTITUTE(SUBSTITUTE(B4,LEFT(B4,FIND(",",B4&",")),""),RIGHT(B4,LEN(B4)-FIND("&",B4&"&")+1),"")),RIGHT(B4,LEN(B4)-SEARCH("@",SUBSTITUTE(B4," ","@",LEN(B4)-LEN(SUBSTITUTE(B4," ","")))))&", "&LEFT(B4,FIND("&",B4&"&")-1)))
=IF(FIND(",",B4&",")=FIND("&",B4&"&"),"",IF(FIND(",",B4&",")<FIND("&",B4&"&"),LEFT(B4,FIND(",",B4&",")-1)&","&RIGHT(B4,LEN(B4)-FIND("&",B4&"&")),RIGHT(B4,LEN(B4)-SEARCH("@",SUBSTITUTE(B4," ","@",LEN(B4)-LEN(SUBSTITUTE(B4," ","")))))&", "&SUBSTITUTE(RIGHT(B4,LEN(B4)-FIND("&",B4&"&")-1),RIGHT(B4,LEN(B4)-SEARCH("@",SUBSTITUTE(B4," ","@",LEN(B4)-LEN(SUBSTITUTE(B4," ",""))))),"")))
Bookmarks