2010-11-05 28 views
0

Fondamentalement, ce que je suis en train de faire est que j'ai cette formule Excel:UPDATE noms de regroupement délimité par esperluette dans Excel

=IF(ISNUMBER(FIND(",",A1,FIND(",",A1,FIND("&",A1,FIND("&",A1))))+1),TRIM(MID(A1,FIND("&",A1,1)+1,FIND("&",A1,FIND("&",A1,1)+1)-FIND("&",A1,1)-1)),IF(ISNUMBER(FIND(",",A1,FIND(",",A1)+1)),TRIM(MID(A1,FIND("&",A1)+1,FIND("&",A1)-3)),IF(ISNUMBER(FIND("&",A1,FIND("&",A1)+1)),CONCATENATE(LEFT(A1,FIND(",",A1)-1),",",TRIM(MID(A1,FIND("&",A1,1)+1,FIND("&",A1,FIND("&",A1,1)+1)-FIND("&",A1,1)-1))),IF(ISNUMBER(FIND("&", A1)),SUBSTITUTE(A1,MID(A1,FIND(",", A1)+1,FIND(" &", A1)-FIND(",", A1)+2), ""),A1)))) 

si vous remarquez, cette partie:

=IF(ISNUMBER(FIND(",",A1,FIND(",",A1,FIND("&",A1,FIND("&",A1))))+1) 

J'essaie de dire si la cellule contient deux virgules et deux esperluettes, alors faites quelque chose. Sinon, je le spécifie pour faire autre chose. Malheureusement, cette condition ne se comporte pas comme prévu. Bien que j'ai cellules avec deux virgules et un seul esperluette:

CORNWALL,A ROBERT & CORNWALL,ANNA 

il traite cela comme vrai, et applique la déclaration suivante fidèle à la cellule ci-dessus et provoque donc une erreur de la valeur parce que la déclaration subséquente vrai ne compte pour la cellule ci-dessus. Il ne prend en compte que les cellules avec deux virgules et deux esperluettes. J'ai déjà une autre condition ISNUMBER pour la cellule ci-dessus, comme vous pouvez le voir dans ma formule initiale.

Existe-t-il un moyen de résoudre ma condition ISNUMBER afin qu'au premier niveau d'exécution, il vérifie à la fois deux virgules et deux esperluands dans la cellule?

Merci pour la réponse.

Répondre

2

Je ne sais pas si je peux voir ce qui ne va pas avec votre code, mais avez-vous essayé une approche différente pour compter le nombre d'esperluettes et de virgules?

=IF(AND(LEN(A1)-LEN(SUBSTITUTE(A1,"&",""))=2,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))=2),TRUECOND,FALSECOND) 

Cela semble juste un peu plus simple.