Passer au contenu principal

Comment concaténer des cellules si la même valeur existe dans une autre colonne dans Excel?

Comme le montre la capture d'écran ci-dessous, si vous souhaitez concaténer des cellules dans la deuxième colonne en fonction des mêmes valeurs dans la première colonne, vous pouvez utiliser plusieurs méthodes. Dans cet article, nous présenterons trois façons d'accomplir cette tâche.

combiner si même


Concaténer les cellules si la même valeur avec des formules et un filtre

Les formules suivantes permettent de concaténer le contenu des cellules correspondantes dans une colonne en fonction de la même valeur dans une autre colonne.

1. Sélectionnez une cellule vide à côté de la deuxième colonne (ici nous sélectionnons la cellule C2), entrez la formule = SI (A2 <> A1, B2, C1 & "," & B2) dans la barre de formule, puis appuyez sur la touche Entrer clé.

2. Sélectionnez ensuite la cellule C2 et faites glisser la poignée de remplissage vers les cellules que vous devez concaténer.

3. Entrez la formule = SI (A2 <> A3, CONCATENER (A2, "," "", C2, "" ""), "") dans la cellule D2 et faites glisser la poignée de remplissage vers les cellules restantes.

4. Sélectionnez la cellule D1 et cliquez sur Données > Filtre. Voir la capture d'écran:

5. Cliquez sur la flèche déroulante dans la cellule D1, décochez la case (Blancs) , puis cliquez sur le OK .

Vous pouvez voir que les cellules sont concaténées si les valeurs de la première colonne sont identiques.

Notes: Pour utiliser les formules ci-dessus avec succès, les mêmes valeurs dans la colonne A doivent être continues.


Concaténez facilement les cellules si même valeur avec Kutools for Excel (plusieurs clics)

La méthode décrite ci-dessus nécessite la création de deux colonnes auxiliaires et implique plusieurs étapes, ce qui peut être peu pratique. Si vous cherchez un moyen plus simple, envisagez d'utiliser le Lignes de combinaison avancées outil de Kutools for Excel. En quelques clics seulement, cet utilitaire vous permet de concaténer des cellules à l'aide d'un délimiteur spécifique, ce qui rend le processus rapide et sans tracas.

Conseil : Avant d'appliquer cet outil, veuillez installer Kutools for Excel d'abord. Aller au téléchargement gratuit maintenant.

1. Cliquez Kutools > Fusionner et fractionner > Lignes de combinaison avancées pour activer cette fonctionnalité.
2. dans le Lignes de combinaison avancées boîte de dialogue, il vous suffit de :
  • Sélectionnez la plage que vous souhaitez concaténer ;
  • Définissez la colonne avec les mêmes valeurs que Clé primaire colonne.
  • Spécifiez un séparateur pour combiner les cellules.
  • Cliquez OK.

Résultat

Notes:

Concaténer les cellules si la même valeur avec le code VBA

Vous pouvez également utiliser le code VBA pour concaténer des cellules dans une colonne si la même valeur existe dans une autre colonne.

1. presse autre + F11 clés pour ouvrir le Applications Microsoft Visual Basic fenêtre.

2. dans le Applications Microsoft Visual Basic fenêtre, cliquez sur insérer > Module. Ensuite, copiez et collez le code ci-dessous dans le Module fenêtre.

Code VBA: concaténer les cellules si les mêmes valeurs

Sub ConcatenateCellsIfSameValues()
	Dim xCol As New Collection
	Dim xSrc As Variant
	Dim xRes() As Variant
	Dim I As Long
	Dim J As Long
	Dim xRg As Range
	xSrc    = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, 2)
	Set xRg = Range("D1")
	On Error Resume Next
	For I = 2 To UBound(xSrc)
		xCol.Add xSrc(I, 1), TypeName(xSrc(I, 1)) & CStr(xSrc(I, 1))
	Next I
	On Error GoTo 0
	ReDim xRes(1 To xCol.Count + 1, 1 To 2)
	xRes(1, 1) = "No"
	xRes(1, 2) = "Combined Color"
	For I = 1 To xCol.Count
		xRes(I + 1, 1) = xCol(I)
		For J = 2 To UBound(xSrc)
			If xSrc(J, 1) = xRes(I + 1, 1) Then
				xRes(I + 1, 2) = xRes(I + 1, 2) & ", " & xSrc(J, 2)
			End If
		Next J
		xRes(I + 1, 2) = Mid(xRes(I + 1, 2), 2)
	Next I
	Set xRg = xRg.Resize(UBound(xRes, 1), UBound(xRes, 2))
	xRg.NumberFormat = "@"
	xRg = xRes
	xRg.EntireColumn.AutoFit
End Sub

Notes:

1. D1 dans la conduite Définir xRg = Range ("D1") signifie que le résultat sera placé en commençant par la cellule D1.
2. "Non"Et "Couleur combinée" dans la conduite xRes (1, 1) = "Non" et xRes (1, 2) = "Couleur combinée" sont les en-têtes des colonnes sélectionnées. 

3. appuie sur le F5 key pour exécuter le code, vous obtiendrez les résultats concaténés dans la plage spécifiée.


Concaténez facilement les cellules si la même valeur avec Kutools for Excel

Meilleurs outils de productivité bureautique

🤖 Aide à l'IA Kutools: Révolutionner l'analyse des données en s'appuyant sur : Exécution intelligente   |  Générer du code  |  Créer des formules personnalisées  |  Analyser les données et générer des graphiques  |  Invoquer les fonctions Kutools...
Caractéristiques populaires: Rechercher, mettre en évidence ou identifier les doublons   |  Supprimer les lignes vides   |  Combinez des colonnes ou des cellules sans perdre de données   |   Tour sans formule 
Super recherche: VSearchup à critères multiples    VSearch à valeurs multiples  |   Recherche virtuelle sur plusieurs feuilles   |   Recherche floue ....
Liste déroulante avancée: Créez rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante à sélection multiple ....
Gestionnaire de colonnes: Ajouter un nombre spécifique de colonnes  |  Déplacer les colonnes  |  Basculer l'état de visibilité des colonnes masquées  |  Comparer les plages et les colonnes 
Caractéristiques en vedette: Mise au point de la grille   |  Voir Design   |   Grande barre de formule    Gestionnaire de classeurs et de feuilles   |  Centre de ressources (Texte automatique)   |  Sélecteur de date   |  Combiner des feuilles de travail   |  Crypter/déchiffrer les cellules    Envoyer des e-mails par liste   |  Super filtre   |   Filtre spécial (filtre gras/italique/barré...) ...
Les 15 meilleurs ensembles d'outils12 Texte Outils (Ajouter du texte, Supprimer les caractères, ...)   |   50+ Graphique Types (Diagramme de Gantt, ...)   |   40+ Pratique Formules (Calculer l'âge en fonction de l'anniversaire, ...)   |   19 Insertion Outils (Insérer le code QR, Insérer une image à partir du chemin, ...)   |   12 Conversion Outils (Nombres en mots, Conversion des devises, ...)   |   7 Fusionner et fractionner Outils (Lignes de combinaison avancées, Cellules divisés, ...)   |   ... et plus

Améliorez vos compétences Excel avec Kutools for Excel et faites l'expérience d'une efficacité comme jamais auparavant. Kutools for Excel offre plus de 300 fonctionnalités avancées pour augmenter la productivité et gagner du temps.  Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...

Description


Office Tab apporte une interface à onglets à Office et facilite grandement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
Comments (23)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
thank you very much, the VBA code works very well but I have a question that I can't solve.

NO Color
1 red
1 blue
1 red
1 yellow
2 red
2 yellow


in this case, in column B we have some duplicate colors related to the same number. How can I have an output that only return the values once?

I would like an output like this

NO Color
1 red, blue, yellow
2 red, yellow
This comment was minimized by the moderator on the site
Hi

The second method described in the post can help you solve this problem. After following the steps to specify the settings, checking the Delect Duplicate Values option will delete all duplicates in the combined results.
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/concatenate.png
This comment was minimized by the moderator on the site
Thank you so much for this formula! It saved hours of investigation! Fantastic work :)
This comment was minimized by the moderator on the site
Hi Crystal,

Thanks for your reply. I'll have to put my thinking hat on again...
Thank you
This comment was minimized by the moderator on the site
Hello, the macro above works great! Thank you. Is it anyway possible (I tried, but not successful) to amend it to concatenate column B (description) based on duplicates in column A (HS code) but also taking column C (origin) in the combination?
So description texts concatenate per HS code per origin.
Also column D(quantity) and column E(value) must be summed per HS code and origin.

A B C D E
HS CODE DESCRIPTION ORIGIN QUANTITY VALUE
5407420000 TWEED CN 10 € 150,00
5407420000 COTTON CN 15 € 250,00
5407420000 POLYESTER TW 5 € 130,00
5407420000 ORGANIC COTTON US 18 € 450,00
5407420000 COTTON US 23 € 780,00
5407420000 VELVET DELUXE CN 20 € 380,00
5407420000 COTTON CN 10 € 120,00
5806310000 TWEED JP 15 € 35,00
5806310000 POLYESTER AU 20 € 78,00
5806310000 TWEED AU 25 € 254,00
5806310000 POLYESTER SG 130 € 888,00
5806310000 COTTON EU 120 € 945,00
5806310000 COTTON FABRIC EU 10 € 80,00


Result shopuld be:

5407420000 TWEED, COTTON, VELVET DULUXE, COTTON, CN 55 € 900,00
5407420000 POLYESTER TW 5 € 130,00
5407420000 ORGANIC COTTON, COTTON US 41 € 1230,00
5806310000 TWEED JP 15 € 35,00
5806310000 POLYESTER, TWEED AU 45 € 332,00
5806310000 POLYESTER SG 130 € 888,00
5806310000 COTTON, COTTON FABRIC EU 130 € 1025,00

I hope this possible, thank you!
This comment was minimized by the moderator on the site
Hi Ivar,

Thank you for your comment. I am not able to solve this problem with VBA code yet. Sorry for that.
You can try if the last method can help.
This comment was minimized by the moderator on the site
Hello, how would the VBA code be adjusted if I want to combine cells in column M based on the duplicates in column A?
This comment was minimized by the moderator on the site
Hi Kristin,To combine cells in column M based on the duplicates in column A, try the VBA below.In the code,  O1 is the first cell to output the results; M is the column you will combine based on the duplicates in column A; A1 and A represent the first cell and the column where the duplicates locate; No and Combine color is the header of the columns after concatenating. You can change these variables as needed.<div data-tag="code">Sub ConcatenateCellsIfSameValues()
'Updated by Extendoffice 20211105
Dim xCol As New Collection
Dim xSrc As Variant
Dim xSrcValue As Variant
Dim xRes() As Variant
Dim I As Long
Dim J As Long
Dim xRg As Range
Dim xResultAddress As String
Dim xMergeAddress As String
Dim xUp As Integer

xResultAddress = "O1" 'The cell to output the results
xMergeAddress = "M" 'The column you will combine based on the duplicates in column A

xSrc = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, 1)
xUp = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Rows.Count
xSrcValue = Range(xMergeAddress & "1:" & xMergeAddress & xUp)

Set xRg = Range(xResultAddress)
On Error Resume Next
For I = 2 To UBound(xSrc)
xCol.Add xSrc(I, 1), TypeName(xSrc(I, 1)) & CStr(xSrc(I, 1))
Next I

On Error GoTo 0
ReDim xRes(1 To xCol.Count + 1, 1 To 2)
xRes(1, 1) = "No"
xRes(1, 2) = "Combined Color"
For I = 1 To xCol.Count
xRes(I + 1, 1) = xCol(I)
For J = 2 To UBound(xSrc)
If xSrc(J, 1) = xRes(I + 1, 1) Then
xRes(I + 1, 2) = xRes(I + 1, 2) & ", " & xSrcValue(J, 1)
End If
Next J
xRes(I + 1, 2) = Mid(xRes(I + 1, 2), 2)
Next I
Set xRg = xRg.Resize(UBound(xRes, 1), UBound(xRes, 2))
xRg.NumberFormat = "@"
xRg = xRes
xRg.EntireColumn.AutoFit
End Sub
This comment was minimized by the moderator on the site
I just wanted to thank you. It wasn't exactly what I wanted but man did it help me figure out what to do.

I have a table where the person's name was in column A, dates in column B and the names of tools they use in the headers of columns C:G . In each column there is a "Y" if they used that tool on that date and blank if they did not. (FYI: the same person can be listed more than once and may have used the same tool more than once) On a separate (summary) page I wanted to list all tools each person used within a date period, only listing each tool they used once, in the same cell. On this page, the person's name was in column A, Types of tools used in column B and the helper columns were in column G:K. Here's what I got:
The first helper column (G2):
=IF(COUNTIFS(Table7[Person's Name],A2,Table7[Screw Driver],"Y",Table7[Date],">="&1/1/20,Table7[Date],"<="&3/31/20),"Screw Driver","")
In the last helper column (K2):
=IF(COUNTIFS(Table7[Person's Name],A2,Table7[Hammer],"Y",Table7[Date],">="&1/1/20,Table7[Date],"<="&3/31/20),IF(J2="","Hammer",J2&"/"&"Hammer"),J2)

In B2 I just entered =K2

Thanks again and I hope this helps someone. EZPD
This comment was minimized by the moderator on the site
Hi, first of all thanks for creating this resource. I have been trying to figure this out for a couple of hours and I'm stuck. I'm using your 'concatenate cells if same value' but my script is looking at column "D" instead of "A. I can't figure out how to get it to use a different column for the data besides the one right next to it. In my cases I want it to look at column "D" to see if the value is the same and if so, it will grab the data from column "H" and put that data from column "H' into a cell in column "J". How do I switch this to use column "H" for the data? Thx


Sub ConcatenateCellsIfSameValues()
Dim xCol As New Collection
Dim xSrc As Variant
Dim xRes() As Variant
Dim I As Long
Dim J As Long
Dim xRg As Range
xSrc = Range("D1", Cells(Rows.Count, "D").End(xlUp)).Resize(, 2)
Set xRg = Range("J1")
On Error Resume Next
For I = 2 To UBound(xSrc)
xCol.Add xSrc(I, 1), TypeName(xSrc(I, 1)) & CStr(xSrc(I, 1))
Next I
On Error GoTo 0
ReDim xRes(1 To xCol.Count + 1, 1 To 2)
xRes(1, 1) = "No"
xRes(1, 2) = "Products"
For I = 1 To xCol.Count
xRes(I + 1, 1) = xCol(I)
For J = 2 To UBound(xSrc)
If xSrc(J, 1) = xRes(I + 1, 1) Then
xRes(I + 1, 2) = xRes(I + 1, 2) & vbCrLf & xSrc(J, 2)
End If
Next J
xRes(I + 1, 2) = Mid(xRes(I + 1, 2), 2)
Next I
Set xRg = xRg.Resize(UBound(xRes, 1), UBound(xRes, 2))
xRg.NumberFormat = "@"
xRg = xRes
xRg.EntireColumn.AutoFit
End Sub
This comment was minimized by the moderator on the site
"I can't figure out how to get it to use a different column for the data besides the one right next to it. In my cases I want it to look at column 'D' to see if the value is the same and if so, it will grab the data from column 'H' and put that data from column 'H' into a cell in column 'J'."

Did you ever figure this out?
This comment was minimized by the moderator on the site
Hi,

looks like 2 of your formulas are wrong :

=IF(A2<>A3,CONCATENATE(A2,",""",C2,""""),""). You need to change "A2" to "D1". As you'll want to add the string to the previous cell.

same goes for this formula :

=IF(A2<>A1,B2,C1 & "," & B2) : Change C1 to D1.


kind regards


Harry
This comment was minimized by the moderator on the site
I use this VBA for lots of my spreadsheets and its great. But the spreadsheets have become very large 50k+ rows and it doesnt seem to be working any more. If I use it on 1000 rows it works fine but large sets of data it cant seem to cope with. No errors just no results. Any help would be appreciated.
This comment was minimized by the moderator on the site
Hi James,
I tested the code as you mentioned, but it still works well in my case even I set the rows to 1000+.
This comment was minimized by the moderator on the site
Using the VBA macro and getting great results, I have tried tweaking it slightly for my needs but cant get it to work so I hope you can help.

Which bit do I change to make it concat a specific column, not the one directly to the right of the xSrc = Range?

Thanks for your great work!
This comment was minimized by the moderator on the site
Or as a better option, if you had 3 columns instead of 2 and found duplicates in column A (like your example) can you concat column B into a cell and column C into a seperate cell? So if you had columns of Number, Colour, Age, could you concat colour and age into different columns upon finding duplicates in Number? Hope that makes sense!
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations