La manipulation de la chaîne avec Excel - comment faire pour supprimer une partie d'une chaîne, si l'autre partie est-il?
J'ai fait quelques recherches sur Google, et ne peut pas trouver quoi que ce soit, mais peut-être que je suis juste à la recherche dans les mauvais endroits. Je ne suis pas très adepte des VBA, mais je suis sûr que je peux le comprendre avec le droit des pointeurs 🙂
J'ai une chaîne je suis bâtiment qui est une concaténation de plusieurs cellules, en fonction de diverses conditions. J'ai frappé dans l'ordre.
=IF(A405<>A404,G405,G405&H404)
Ce que je veux faire est de revenir par le biais de ma liste concaténée, la suppression d'un remplacées valeur si le superseder est dans la liste.
Voir, par exemple, la liste suivante:
A, D, G, Y, Z
Je veux supprimer D
si et seulement si Y
est présent.
Comment pourrais-je aller à ce sujet? (VBA ou dans les cellules, bien que je préfère dans les cellules)
OriginalL'auteur warren | 2008-11-04
Vous devez vous connecter pour publier un commentaire.
Essayer:
Mais cela suppose que vous ayez toujours la virgule et l'espace à la suite de la D.
OriginalL'auteur
Tout d'abord, pourquoi ne pas garder un tableau de chaîne au lieu que vous passez par toutes les cellules, puis concaténer tout à la fin?
Sinon, vous allez utiliser les fonctions de chaîne comme l'INSTRUMENT et le MILIEU de faire quelque chose comme:
Mais, comme je l'ai dit, j'aimerais garder un tableau qui est facile à boucle, puis une fois que vous avez toutes les valeurs que vous SAVEZ que vous allez utiliser, il suffit de les enchaîner à la fin.
OriginalL'auteur BradC
VBA : Vous pouvez toujours utiliser l'objet regexp.
Je pense que vous donne la possibilité de tester quoi que ce soit sur votre script aussi longtemps que vous le construire correctement l'expression régulière.
Découvrez : http://msdn.microsoft.com/en-us/library/yab2dx62(SV.85).aspx ( pour les regexp de référence )
et d'un outil simple pour tester vos expressions régulières : http://www.codehouse.com/webmaster_tools/regex/
Dans les cellules de: vous pourriez le faire dans un plus excel de manière conviviale:
supposons que sur la colonne A:A, vous avez l'valeurs.
Vous pouvez ajouter une nouvelle colonne où vous effectuez la vérification
if(indirect("A"&row()) <> indirect("A"&row()-1), indirect("G"&row()), indirect("G"&row())& indirect("H"&row()))
ou quelles que soient les valeurs sont. Je suppose cependant que sur une seule branche de l'instruction si la valeur doit être vide. Après que vous concaténer seulement les B:B valeurs de la colonne ( en ignorant les espaces si nécessaire ).
Espère que cette aide.
OriginalL'auteur da_m_n
Il est probablement plus facile de commencer par la fin, faire vos ajouts au début de la chaîne et d'en ajouter D si Y n'est pas présent.
OriginalL'auteur Andru Luvisi
Je suppose que D peut apparaître n'importe où, de sorte que diriez-vous:
OriginalL'auteur Fionnuala
Si il n'y a pas trop de ces combinaisons que vous souhaitez supprimer, vous pouvez utiliser =SI(TROUVE("D"; A2)> 0; REMPLACER(A2;1;3;"");A2).
OriginalL'auteur bjorsig
Je viens de recevoir cela comme une solution possible par mail:
(ce qui a des "vraies" valeurs avec les règles de priorité)
Il semble relativement similaire à @Joseph's réponse.
Est-il une meilleure solution?
OriginalL'auteur warren