Note: The other languages of the website are Google-translated. Back to English
Se connecter  \/ 
x
or
x
INSCRIPTION  \/ 
x

or

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

combiner si même

Comme le montre la capture d'écran de gauche, vous devez concaténer les cellules de la deuxième colonne si les valeurs de la première colonne sont identiques. Comment pouvez-vous y parvenir?

Dans cet article, nous présenterons trois méthodes pour y parvenir.

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

Concaténer les cellules si la même valeur avec le code VBA
Concaténer facilement des cellules si la même valeur avec Kutools for Excel


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

Avec les formules ci-dessous, vous pouvez concaténer le contenu des cellules correspondantes si une autre colonne contient la même valeur dans Excel.

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 Data > 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.


Combinez facilement des cellules dans une colonne si la même valeur existe dans une autre colonne:

Avec Kutools pour Excel's Lignes de combinaison avancées utilitaire, vous pouvez facilement combiner des cellules dans une colonne si la même valeur existe dans d'autres colonnes dans Excel, comme illustré ci-dessous. Téléchargez Kutools for Excel maintenant! (Parcours gratuit de 30 jours)

contatinate de même


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

Outre la formule, dans cette section, nous allons vous montrer comment utiliser le code VBA pour concaténer des cellules si la même valeur.

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 en ligne Définir xRg = Range ("D1") signifie que le résultat sera placé dans la cellule D1.

2. Non et Couleur combinée en ligne xRes (1, 1) = "Non" et xRes (1, 2) = "Couleur combinée" sont les en-têtes des colonnes concaténées. Vous pouvez les changer selon vos besoins.

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éner facilement les cellules si la même valeur avec Kutools for Excel (plusieurs clics)

Si les deux méthodes ci-dessus sont compliquées pour vous, nous vous montrerons ici Lignes de combinaison avancées utilité de Kutools pour Excel Vous pouvez facilement concaténer des cellules par virgule, point-virgule, etc. si les mêmes valeurs existent dans une autre colonne.

Avant d'appliquer Kutools pour Excel, S'il vous plaît téléchargez et installez-le d'abord.

1. Sélectionnez la plage contenant les cellules à concaténer, puis cliquez sur Kutools > Fusionner et fractionner > Lignes de combinaison avancées. Voir la capture d'écran:

2. dans le Lignes de combinaison avancées boîte de dialogue, vous devez procéder comme suit.

  • 2.1) Sélectionnez la colonne avec la même valeur que vous souhaitez concaténer les cellules en fonction, puis cliquez sur le bouton Clé primaire .
  • 2.2) Sélectionnez la colonne dont vous souhaitez concaténer les cellules, cliquez sur Combiner bouton, puis spécifiez un séparateur dans le menu contextuel (ici je spécifie Virgule).
  • 2.3) Cliquez sur le OK .

Les cellules sont maintenant concaténées selon la colonne de clé primaire.

  Si vous souhaitez bénéficier d'un essai gratuit (30 jours) de cet utilitaire, veuillez cliquer pour le télécharger, puis passez à appliquer l'opération selon les étapes ci-dessus.


Concaténer facilement des cellules si la même valeur avec Kutools for Excel


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement 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!
bas de cabine
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Kristin · 1 months ago
    Hello, how would the VBA code be adjusted if I want to combine cells in column M based on the duplicates in column A?
    • To post as a guest, your comment is unpublished.
      crystal · 27 days ago
      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.
      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
  • To post as a guest, your comment is unpublished.
    EZPD · 1 years ago
    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
  • To post as a guest, your comment is unpublished.
    Jadee · 2 years ago
    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
    • To post as a guest, your comment is unpublished.
      mcaldw · 1 years ago
      "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?
  • To post as a guest, your comment is unpublished.
    HarryVyvey · 2 years ago
    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
  • To post as a guest, your comment is unpublished.
    James · 3 years ago
    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.
    • To post as a guest, your comment is unpublished.
      crystal · 3 years ago
      Hi James,
      I tested the code as you mentioned, but it still works well in my case even I set the rows to 1000+.
  • To post as a guest, your comment is unpublished.
    Travelermatt · 3 years ago
    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!
    • To post as a guest, your comment is unpublished.
      Travelermatt · 3 years ago
      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!
  • To post as a guest, your comment is unpublished.
    Ram · 3 years ago
    This is exactly what I needed...thank you
  • To post as a guest, your comment is unpublished.
    RS · 3 years ago
    I am so thankful to you for these formulas. Fantastic work!
  • To post as a guest, your comment is unpublished.
    Marissa W · 4 years ago
    The concatenate feature does not work. Combines all the rows into one cell despite different keys.
    • To post as a guest, your comment is unpublished.
      crystal · 4 years ago
      Dear Marissa,
      Sorry I am not sure I got your question. There are three methods in the article, which concatenate feature do you mean?
  • To post as a guest, your comment is unpublished.
    Geoffrey saya · 4 years ago
    How can i merge collums with the same names eg Column one reads Kenya throughout and collumn 2 reads western, Nyanza( appearing more than ten times) and column 3 three names of districts. I want to get how mang districts do we have in every province but keep the columns.
    • To post as a guest, your comment is unpublished.
      crystal · 4 years ago
      Dear Geoffrey,

      Please try the Advanced Combine Rows utility we mentioned in above method two. If you want to keep the columns, please make a copy of the original range and do everything in the copied range.

      Specify the province column as Primary Key, set the Column 1 as Keep 1st, and then set the district column as Calculate > Count.

      After that, you will get how many district you have in every province.
  • To post as a guest, your comment is unpublished.
    cathy postmus · 5 years ago
    Can't seem to concatenate with more than 2 cells using formulas and filters