Comment fusionner les lignes d'une colonne dans une cellule dans excel?

Par exemple

A1:I
A2:am
A3:a
A4:boy 

Je veux les fusionner tous dans une seule cellule "Iamaboy"
Cet exemple montre que 4 cellules fusionnent en 1 cellule mais j'ai beaucoup de cellules (plus de 100), Je ne peux pas les taper une par une en utilisant A1 & A2 & A3 & A4 Que puis-je faire?

74
demandé sur ashleedawg 2011-11-15 15:57:56

8 réponses

Je vous présente ma fonction ConcatenateRange VBA (merci Jean pour le Conseil de nommage!) . Il faudra une gamme de cellules (n'importe quelle dimension, n'importe quelle direction, etc.) et les fusionner en une seule chaîne. En tant que troisième paramètre facultatif, vous pouvez ajouter un séparateur (comme un espace ou des virgules sérérées).

Dans ce cas, vous écrivez ceci pour l'utiliser:

=ConcatenateRange(A1:A4)

Function ConcatenateRange(ByVal cell_range As range, _
                    Optional ByVal separator As String) As String

Dim newString As String
Dim cell As Variant

For Each cell in cell_range
    If Len(cell) <> 0 Then
        newString = newString & (separator & cell))
    End if
Next

If Len(newString) <> 0 Then
    newString = Right$(newString, (Len(newString) - Len(separator)))
End If

ConcatenateRange = newString

End Function
82
répondu aevanko 2017-11-17 15:19:50

Si vous préférez le faire sans VBA, vous pouvez essayer ce qui suit:

  1. avoir vos données dans les cellules A1: A999 (ou tel)
  2. Définir la cellule B1 sur "= A1 "
  3. Définir la cellule B2 sur "= B1 & A2 "
  4. Copiez la cellule B2 jusqu'à B999 (par exemple en copiant B2, en sélectionnant les cellules B3:B99 et en collant)

La cellule B999 contiendra maintenant la chaîne de texte concaténée que vous recherchez.

141
répondu Mischinab 2011-11-15 17:01:46

Dans CONCATENATE vous pouvez utiliser TRANSPOSE si vous les développez (F9) puis retirez les environs {}parenthèses comme ce recommande

=CONCATENATE(TRANSPOSE(B2:B19))

Devient

=CONCATENATE("Oh ","combining ", "a " ...)

Concaténer (transposer (B2: B19))

Vous devrez peut-être ajouter votre propre séparateur à la fin, par exemple créer une colonne C et transposer cette colonne.

=B1&" "
=B2&" "
=B3&" "
35
répondu KCD 2015-06-30 03:30:30

Dans les cas simples, vous pouvez utiliser la méthode next qui ne nécessite pas de créer une fonction ou de copier du code dans plusieurs cellules:

  1. Dans n'importe quelle cellule, écrivez le code suivant

    =Transpose(A1:A9) 
    

Où A1: A9 sont des cellules que vous souhaitez fusionner.

  1. , Sans quitter la cellule, appuyez sur F9

Après cela, la cellule contiendra la chaîne:

={A1,A2,A3,A4,A5,A6,A7,A8,A9}

Source: http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-excel/

Mise à jour: une partie peut être ambiguë. Sans quitter la cellule signifie avoir votre cellule en mode éditeur. Alternatevly vous pouvez appuyer sur F9 alors que sont dans le panneau de l'éditeur de cellules (normalement, il peut être trouvé au-dessus de la feuille de calcul)

23
répondu yauheni_selivonchyk 2013-12-03 07:29:37

Utilisez la fonction Join existante de VBA. Les fonctions VBA ne sont pas exposées dans Excel, donc j'enveloppe Join dans une fonction définie par l'utilisateur qui expose ses fonctionnalités. La forme la plus simple est:

Function JoinXL(arr As Variant, Optional delimiter As String = " ")
    'arr must be a one-dimensional array.
    JoinXL = Join(arr, delimiter)
End Function

Exemple d'utilisation:

=JoinXL(TRANSPOSE(A1:A4)," ") 

Entré comme une formule de tableau (à l'aide de Ctrl-Maj-Saisissez).

entrez la description de l'image ici


Maintenant, JoinXL n'accepte que des tableaux unidimensionnels en entrée. Dans Excel, les plages renvoient des tableaux bidimensionnels. Ci-dessus exemple, TRANSPOSE convertit le tableau bidimensionnel 4×1 en un tableau unidimensionnel à 4 éléments (c'est le comportement documenté de TRANSPOSE lorsqu'il est alimenté avec un tableau bidimensionnel à une seule colonne).

Pour une plage horizontale, vous devez faire un double TRANSPOSE:

=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))

L'intérieur TRANSPOSE convertit le tableau bidimensionnel 1×4 en un tableau bidimensionnel 4×1, que l'extérieur TRANSPOSE convertit ensuite en le tableau unidimensionnel à 4 éléments attendu.

entrez la description de l'image ici

Cette utilisation de TRANSPOSE est un moyen bien connu de convertir des tableaux 2D en tableaux 1D dans Excel, mais cela semble terrible. Une solution plus élégante serait de cacher cela dans la fonction JoinXL VBA.

12
répondu Jean-François Corbett 2016-02-16 09:30:57

Pour ceux qui ont Excel 2016 (et je suppose que les versions suivantes), il y a maintenant directement la fonctionCONCAT , qui remplacera la fonctionCONCATENATE .

Donc la bonne façon de le faire dans Excel 2016 est :

=CONCAT(A1:A4)

Qui produira:

Iamaboy

Pour les utilisateurs d'anciens versions d'Excel, les autres réponses sont pertinentes.

6
répondu gvo 2017-03-03 16:54:37

Pour Excel 2011 sur Mac, c'est différent. Je l'ai fait comme un processus en trois étapes.

  1. crée une colonne de valeurs dans la colonne A.
  2. dans la colonne B, à droite de la première cellule, créez une règle qui utilise la fonction concaténer sur la valeur de la colonne et ",". Par exemple, en supposant que A1 est la première ligne, la formule pour B1 est =B1. Pour la ligne suivante à la ligne N, la formule est =Concatenate(",",A2). Vous vous retrouvez avec:
QA
,Sekuli
,Testing
,Applitools
,Visual Testing
,Test Automation
,Selenium
  1. dans la colonne C, créez une formule qui concatène tout les valeurs précédentes. Parce que c'est additif, vous obtiendrez tout à la fin. La formule pour la cellule C1 est =B1. Pour toutes les autres lignes à N, La formule est =Concatenate(C1,B2). Et vous obtenez:
QA,Sekuli
QA,Sekuli,Testing
QA,Sekuli,Testing,Applitools
QA,Sekuli,Testing,Applitools,Visual Testing
QA,Sekuli,Testing,Applitools,Visual Testing,Test Automation
QA,Sekuli,Testing,Applitools,Visual Testing,Test Automation,Selenium

La dernière cellule de la liste sera ce que vous voulez. Ceci est compatible avec Excel sur Windows ou Mac.

2
répondu Chris Riley 2017-08-04 12:51:23

J'utilise la méthode CONCATENATE pour prendre les valeurs d'une colonne et envelopper les guillemets avec des colonnes entre les deux afin de remplir rapidement la clause WHERE IN () d'une instruction SQL.

J'ai toujours tout type =CONCATENATE("'",B2,"'",","), puis sélectionnez-le et faites-le glisser vers le bas, ce qui crée =CONCATENATE("'",B3,"'",","), =CONCATENATE("'",B4,"'",","), etc. mettez ensuite en surbrillance cette colonne entière, copiez-la dans un éditeur de texte brut et collez-la si nécessaire, effaçant ainsi la séparation des lignes. Il fonctionne, mais encore, comme d'une affaire, ce n'est pas une bonne solution pour quelqu'un qui a besoin de ça tout le temps.

1
répondu GoldPaintedLemons 2014-10-20 10:46:26