Votre erreur est ici:
=LEFT(B3,FIND(",",B3&",")-1)&","&RIGHT(B3,LEN(B3)-FIND("&",B3&"&")),
À ce stade, la virgule ne concerne pas anthing, car l'opérateur a droit parens correspondant à
En ce qui concerne ce que vous voulez? Brisons que vous dans ce que vous avez réellement demandé:
si aucune esperluette dans une cellule, retour cellule vide,
B4=Find("&", B3&"&")
B5=IF(B4>LEN(B3),"",B6)
si aucune existe virgule mais esperluette
B6=IF(FIND(",", B3&",")>LEN(B3),B8,B7)
puis tournez ceci, par exemple:
KNUD J & MARIA L HOSTRUP dans ce: HOSTRUP, MARIA L
Je vous présumant dire de mettre le dernier mot entier? Marquons le dernier mot entier:
B9=SUBSTITUTE(B3," ","@",LEN(B3)-LEN(SUBSTITUTE(B3," ","")))
B10=RIGHT(B7,LEN(B9)-FIND("@",B9))
Et les choses entre l'esperluette et le dernier mot
B11=TRIM(MID(B9,B4 + 1, LEN(B9)-FIND("@",B9)-1))
Ensuite, le calcul est facile
B7=B10&","&B11
Sinon, il n'y a esperluette mais il y a une virgule donc nous revenons juste: GAUCHE (A1, FIND ("&", A1,1) -1).
Eh bien, si vous voulez que nous allons mettre juste que dans B8
B8=LEFT(A1,FIND("&",A1,1)-1)
(Mais je pense que vous voulez dire en fait B3 au lieu de A1)
B8=LEFT(B3,FIND("&",B3,1)-1)
Et là, vous avez (B5 contient les informations que vous cherchez) Il a fallu quelques cellules, mais il est plus facile de déboguer de cette façon. Si vous voulez le réduire, vous pouvez le faire (mais en faisant cela, c'est plus de code, car nous pouvons réduire la duplication en référençant une cellule précédemment calculée à plus d'une occasion).
Résumé:
B3=<Some Name with & or ,>
B4=FIND("&", B3&"&")
B5=IF(B4>LEN(B3),"",B6)
B6=IF(FIND(",", B3&",")>LEN(B3),B7,B8)
B7=B10&","&B11
B8=LEFT(B3,FIND("&",B3,1)-1)
B9=SUBSTITUTE(B3," ","@",LEN(B3)-LEN(SUBSTITUTE(B3," ","")))
B10=RIGHT(B9,LEN(B9)-FIND("@",B9))
B11=TRIM(MID(B9,B4 + 1, LEN(B9)-FIND("@",B9)-1))
Quand je mets en "J KNUD & MARIA L HOSTRUP", je reçois "HOSTRUP, MARIA" dans B5.
Il serait probablement utile si vous avez rompu vos très longues formules en cellules séparées (cachées?) – McKay