Supprimer les doublons dans cellule Excel
Dire que j'ai la suite de chaîne de texte dans une seule cellule Excel:
John John John Mary Mary
Je veux créer une formule (donc pas de fonctions de menu ou de VBA, s'il vous plaît), qui me donnerait, sur une autre cellule
John Mary
Comment puis-je faire cela?
Ce que j'ai essayé jusqu'à présent a été une recherche sur internet et DONC sur la question et tout ce que je pouvais trouver ont été les solutions impliquant Excel intégré de suppression des doublons ou quelque chose impliquant countif
et le remplacement de doublons pour ""
. J'ai aussi pris un coup d'oeil à la liste des fonctions Excel, en particulier ceux de la catégorie "Texte", mais ne pouvais pas trouver quelque chose d'intéressant, qui pourrait être fait sur une cellule.
Je vais mettre à jour le Q avec mes faibles tentatives pour résoudre le problème.
Je peux comprendre le besoin pour uniquement à l'aide de formules, mais puis-je vous demander pourquoi vous ne pouvez pas utiliser VBA pour cela avec une Macro associée à une forme ou d'un bouton sur la feuille? Je suis purement curieux. Même un événement intégré à la Feuille de calcul. hmm?
beaucoup de nos utilisateurs utilisent Calc au lieu d'Excel; à partir de mon expérience, Calc ne pas faire un travail d'interprétation de rien, mais la plus simple des macros VBA.
OriginalL'auteur Waldir Leoncio | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
La réponse est ici: https://www.extendoffice.com/documents/excel/2133-excel-remove-duplicate-characters-in-string.html
Mettre le code ci-dessus dans un module
Utilisation
=remove(A2,",")
A2 contient répétées de texte séparé par des ,
Vous pouvez changer le séparateur de
OriginalL'auteur Madhav Kulkarni
Comme je l'ai écrit, c'est facile à résoudre à l'aide de VBA. Si vous ne pouvez pas utiliser VBA, une méthode consiste à utiliser le helper de colonnes.
Assumer: Votre chaîne est en A1
Entrez les formules suivantes:
Sélectionner C1 et D1 et recopier vers le bas jusqu'à ce que vous commencez à obtenir des blancs
Sélectionnez E2 et remplissage vers le bas.
Le contenu de la dernière cellule remplie de la colonne E sera votre résultat.
Si vous voulez avoir une cellule qui automatiquement renvoie le contenu de la dernière cellule de la colonne E de la gamme, vous pouvez utiliser une formule comme:
Il fonctionne sur votre échantillon de données. Si votre échantillon n'est pas représentatif, modifier votre question initiale à fournir des informations sur les échecs.
OriginalL'auteur Ron Rosenfeld
Sans une formule: Colonnes de Texte avec un espace comme séparateur, de la transposition de la sortie, s'appliquent à Supprimer les Doublons de chacune des colonnes individuellement, puis transposer le résultat.
OriginalL'auteur pnuts
En supposant que vous n'aurez jamais plus de deux noms distincts dans une cellule, cela devrait fonctionner:
Il va montrer
John Mary
pour toutes ces:Il va montrer
John
pour toutes ces:Et il affiche rien si
A1
est vide.Cette stratégie permettrait d'obtenir de très poilue pour 3 noms, et vous pouvez frapper certains Excel limite de temps avant de se rendre à 16 noms. En gros, c'est un algorithme récursif: A) d'attraper le premier mot, B) enlever du reste de la chaîne, C) concaténer A et B, [répétez les étapes A) à C) sur les résultats de l'étape B, ...]. Votre question met en évidence la faiblesse de Excel opérations de la chaîne. (En particulier de l'impossibilité d'utiliser les expressions régulières.) Aussi, Excel absence de
eval
-comme la fonction rend difficile pour ce genre de chose sans avoir recours à VBA ou à l'aide de "caché" des cellules.est-il possible de faire cela sans la virgule et jusqu'à 3 chaînes uniques?
Pas sûr de ce que tu veux dire à propos de la virgule, mais je ne voudrais certainement pas conseillé d'utiliser cette stratégie pour plus de 2 chaînes uniques. Excel n'est pas gérer cela très bien sans avoir recours à VBA.
OriginalL'auteur Rick Hitchcock
Trouvé une solution qui pourrait fonctionner, si vous êtes aussi celui qui la liste.
lorsque vous faire la liste si vous le faites par la combinaison de la cellule au-dessus de la ligne courante, vous pouvez vérifier pour voir si la valeur est déjà au-dessus de la cellule à l'aide du code suivant:
OriginalL'auteur user10291834
J'ai trouvé la réponse dans ce fil https://superuser.com/questions/643909/remove-duplicate-entries-in-one-cell
=join(" ",unique(transpose(split(A1," "))))
OriginalL'auteur user11308575