Ignorer les doublons et créer une nouvelle liste de valeurs uniques dans Excel
j'ai une colonne de valeurs qui apparaissent souvent comme des doublons. Je dois créer une nouvelle colonne, de valeurs uniques basées sur la première colonne, comme suit:
Column A Column B
a a
a b
b c
c
c
cette colonne B devra en fait apparaître sur une feuille différente, dans le même classeur, donc je suppose qu'elle devra fonctionner avec le format de style sheet2!A1
.
Je n'ai pas eu de chance avec les options de menu Données/Filtre car cela ne semble fonctionner que sur commande. J'ai besoin d' colonne B pour mettre à jour automatiquement chaque fois qu'une nouvelle valeur est entrée dans la colonne A.
12 réponses
la réponse de Totero est correcte. Le lien est également très utile.
fondamentalement, la formule dont vous avez besoin est:
B2=INDEX($A:$A, MATCH(0, COUNTIF($B:B1, $A:$A), 0))
puis appuyez sur ctrl + shift + entrer (ou il ne fonctionnera pas en utilisant une formule de tableau).
Deux choses importantes à garder à l'esprit ici: La liste complète est dans les cellules A2:A20
, cette formule doit être collé dans la cellule B2
(pas B1
car cela vous donnera une référence circulaire).
Deuxièmement, c'est une formule de tableau, de sorte que vous devez appuyer sur ctrl + shift + entrée ou il ne fonctionnera pas correctement.
dans mon cas l'excel a été gelé en utilisant la formule de
B2 = INDEX($A$2:$A $ 20, MATCH (0, COUNTIF($B $1: B1, $ A$2:$a $ 20), 0))
parce qu'il y avait beaucoup de rangées (10000). Donc j'ai fait d'une autre façon que je montre ci-dessous.
j'ai copié ma liste originale pour une deuxième colonne, puis avec la fonction d'Excel "supprimer les doublons", je pourrais trouver la liste des valeurs uniques.
copié du site Web de Microsoft Office:
Select all the rows, including the column headers, in the list
vous voulez filtrer.
cliquez sur la case supérieure gauche de la gamme, puis faites glisser jusqu'à la case inférieure droite.
On the Data menu, point to Filter, and then click Advanced Filter. In the Advanced Filter dialog box, click Filter the list, in place. Select the Unique records only check box, and then click OK.
la liste filtrée est affichée et les lignes dupliquées sont cachées.
On the Edit menu, click Office Clipboard.
le volet de tâche du Presse-papiers est affiché.
Make sure the filtered list is still selected, and then click Copy Copy button.
la liste filtrée est mis en surbrillance avec des contours limitants et la sélection apparaît comme un élément > > en haut du bloc-notes.
On the Data menu, point to Filter, and then click Show All.
la liste originale est affichée de nouveau.
Press the DELETE key.
la liste originale est supprimée.
In the Clipboard, click on the filtered list item.
la liste filtrée apparaît au même endroit que la liste originale.
Source: Site Web de Microsoft Office (LIEN SUPPRIMÉ, cause dead)
sur un colonne triée , vous pouvez également essayer cette idée:
B2=A2
B3=IFERROR(INDEX(A:A,MATCH(B2,A:A,1)+1),"")
B3 peut être collé vers le bas. Il en résultera 0, après le dernier match unique. Si cela n'est pas souhaité, mettez une déclaration IF autour pour exclure cela.
Edit:
plus facile qu'une instruction IF, au moins pour les valeurs textuelles:
B3=IFERROR(T(INDEX(A:A,MATCH(B2,A:A,1)+1)),"")
pour supprimer les doublons d'une colonne
- trier les valeurs dans la colonne A A - > Z
- sélectionnez colonne b
-
si la colonne b est toujours sélectionnée, inscrivez
=IF(TRIM(A1)=TRIM(A2),"",TRIM(A1))
-
pendant que la colonne B est encore sélectionnée, sélectionnez Edit - > Fill - > Down (dans les versions plus récentes, sélectionnez simplement la cellule B1 et tirez la boîte extérieure pour étendre tout le chemin vers le bas dans la colonne)
Note : si la colonne B est sur une autre feuille, vous pouvez faire Sheet1!A1 et Sheet1!A2.
dans le module feuille de travail pour la feuille contenant la liste:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDest As Range
If Not Intersect(Target, Me.Columns(1)) Is Nothing Then
Set rngDest = ThisWorkbook.Sheets("Sheet2").Range("A1")
Me.Range(Me.Range("A2"), Me.Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=rngDest, Unique:=True
End If
End Sub
j'ai une liste de noms de couleurs dans la gamme A2:A8, dans la colonne B je veux extraire une liste distincte de noms de couleurs.
suivre les étapes suivantes:
- sélectionnez la cellule B2; écrivez la formule pour récupérer les valeurs uniques à partir d'une liste.
-
=IF(COUNTIF(A:A2,A2)=1,A2,””)
- appuyez sur entrez sur votre clavier.
- la fonction retournera le nom du premier couleur.
- pour retourner la valeur pour le reste des cellules, copiez la même formule vers le bas. Pour copier la formule dans la gamme B3: B8, copier la formule dans la cellule B2 en appuyant sur la touche Ctrl+C sur votre clavier et coller dans la gamme B3:B8 en appuyant sur la touche Ctrl+V .
- ici vous pouvez voir la sortie où nous avons la liste unique des noms de couleur.
donc pour cette tâche Classez D'abord vos données dans l'ordre de A à Z ou Z à A alors vous pouvez juste utiliser une formule simple comme indiqué ci-dessous:
=IF(A2=A3, "Duplicate", "Not Duplicate")
la formule ci-dessus indique que si les données de la colonne A2 ( A est la colonne et 2 est le numéro de ligne) sont similaires à celles de la colonne A3 (A est la colonne et 3 est le numéro de ligne), alors elles seront imprimées en double sinon elles ne seront pas imprimées en double.
permet de considérer un exemple, la colonne A se compose l'adresse e-mail dans laquelle certains sont dupliqués, donc dans Colonne 2, j'ai utilisé la formule indiquée ci-dessus qui, dans les résultats, m'a montré les deux doublons cellules une est la rangée 2 et la rangée 6.
un vous avez obtenu les données dupliquées il suffit de mettre un filtre sur votre feuille et rendre visible seulement les données dupliquées et supprimer toutes les données inutiles.
honnêtement j'ai suivi ces exemples à un tee et ils n'ont tout simplement pas fonctionné. Ce que j'ai fini par faire après avoir lutté inutilement pour obtenir Excel de travailler était de simplement copier le contenu entier de ma colonne vers NotePad++ où j'ai été en mesure de trouver une solution facile en quelques minutes. Regardez ceci: supprimer les lignes dupliquées dans Notepad++
Edit: voici un bref aperçu de la façon de le faire dans TextFX:
Plugins - > Gestionnaire de Plugin -> Afficher le Gestionnaire de Plugin -> onglet Disponible -> TextFX -> Installer
après que TextFX est installé dans NotePad++, puis vous sélectionnez tout votre texte que vous voulez supprimer les doublons, puis assurez-vous de vérifier: TextFX - > outils TextFX - > trier les sorties seulement les lignes uniques
puis cliquez sur "ligne de tri sensible à la casse" ou "ligne de tri non sensible à la casse" et il effectuera le tri unique.
Trouver ici mentionné ci-dessus de formule avec contrôle d'erreur
=IFERROR(INDEX($B:$B, MATCH(0,COUNTIF($D:D1, $B:$B), 0)),"")
où: (B2:B9 est la donnée de colonne que vous voulez extraire les valeurs uniques, D1 est la cellule ci-dessus où votre formule est située)
Tout ce que vous avez à faire est : Aller à l'onglet Données Choisir avancé en Tri & Filter Dans actions sélectionner : Copier vers un autre endroit si vous voulez une nouvelle liste - Copie de n'importe quel emplacement Dans la gamme de liste choisissez la liste que vous voulez obtenir les enregistrements off . Et la chose la plus importante est de vérifier : Dossiers uniques seulement .
L'approche moderne consiste à considérer les cas où la colonne d'information provient d'un service web tel Qu'une source OData. Si vous avez besoin de générer un filtre sélectionner des champs à partir de données massives qui a répliqué des valeurs pour la colonne, considérez le code ci-dessous:
var CatalogURL = getweb(currenturl)
+"/_api/web/lists/getbytitle('Site%20Inventory%20and%20Assets')/items?$select=Expense_x0020_Type&$orderby=Expense_x0020_Type";
/* the column that is replicated, is ordered by <column_name> */
OData.read(CatalogURL,
function(data,request){
var myhtml ="";
var myValue ="";
for(var i = 0; i < data.results.length; i++)
{
myValue = data.results[i].Expense_x0020_Type;
if(i == 0)
{
myhtml += "<option value='"+myValue+"'>"+myValue+"</option>";
}
else
if(myValue != data.results[i-1].Expense_x0020_Type)
{
myhtml += "<option value='"+myValue+"'>"+myValue+"</option>";
}
else
{
}
}
$("#mySelect1").append(myhtml);
});