Par exemple
A1:I
A2:am
A3:a
A4:boy
Je veux tous les fusionner dans une seule cellule "Iamaboy"
Cet exemple montre que 4 cellules fusionnent en 1 cellule, mais que j'ai plusieurs cellules (plus de 100), je ne peux pas les saisir une par une en utilisant A1 & A2 & A3 & A4
que puis-je faire?
Je vous présente ma fonction ConcatenateRange VBA (merci Jean pour le conseil de nommage!). Cela prendra une plage de cellules (n'importe quelle dimension, n'importe quelle direction, etc.) et les fusionnera 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érialisées).
Dans ce cas, vous écririez 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
Si vous préférez le faire sans VBA, vous pouvez essayer les solutions suivantes:
La cellule B999 contient désormais la chaîne de texte concaténée que vous recherchez.
Dans CONCATENATE
, vous pouvez utiliser TRANSPOSE
si vous le développez (F9) puis retirez les {}
brackets environnants tels que this recommande
=CONCATENATE(TRANSPOSE(B2:B19))
Devient
=CONCATENATE("Oh ","combining ", "a " ...)
Vous devrez peut-être ajouter votre propre séparateur à la fin, par exemple, créez une colonne C et transposez cette colonne.
=B1&" "
=B2&" "
=B3&" "
Dans des cas simples, vous pouvez utiliser la méthode next qui ne vous oblige pas à créer une fonction ou à copier du code dans plusieurs cellules:
Dans n'importe quelle cellule, écrivez le code suivant
=Transpose(A1:A9)
Où A1: A9 sont les cellules que vous souhaitez fusionner.
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, vous devez avoir votre cellule en mode éditeur. Alternativement, vous pouvez appuyer sur F9 lorsque vous êtes dans le panneau de l'éditeur de cellule (normalement, il se trouve au-dessus de la feuille de calcul)
Utilisez la fonction Join
déjà existante de VBA. Les fonctions VBA n'étant pas exposées dans Excel, je vais donc envelopper 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é sous forme de formule matricielle (en utilisant Ctrl-Shift-Enter).
Maintenant, JoinXL
n'accepte que les tableaux à une dimension. Dans Excel, les plages renvoient des tableaux bidimensionnels. Dans l'exemple ci-dessus, TRANSPOSE
convertit le tableau bidimensionnel 4 × 1 en un tableau unidimensionnel à 4 éléments (il s'agit du comportement documenté de TRANSPOSE
lorsqu'il est alimenté avec un élément à deux colonnes tableau dimensionnel).
Pour une plage horizontale, vous devrez faire un double TRANSPOSE
:
=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))
Le TRANSPOSE
intérieur convertit le tableau bidimensionnel 1 × 4 en un tableau bidimensionnel 4 × 1, que le TRANSPOSE
extérieur convertit ensuite en un tableau unidimensionnel à 4 éléments attendu.
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 consisterait à cacher cela dans la fonction JoinXL
VBA.
Pour ceux qui ont Excel 2016 (et je suppose les prochaines versions), il existe maintenant directement la fonction CONCAT , qui remplacera la fonction CONCATENATE .
Donc, la manière correcte de le faire dans Excel 2016 est la suivante:
=CONCAT(A1:A4)
qui produira:
Je suis un garçon
Pour les utilisateurs d'anciennes versions d'Excel, les autres réponses sont pertinentes.
Pour Excel 2011 sur Mac, c'est différent. Je l'ai fait en trois étapes.
=B1
. Pour la rangée suivante à la rangée N, la formule est =Concatenate(",",A2)
. Vous vous retrouvez avec:QA , Sekuli , Tests , Applitools , Tests visuels , Automatisation des tests , Sélénium
=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, Test visuel QA, Sekuli, Tests, Applitools, Tests visuels, Automatisation des tests QA, Sekuli, Tests, Applitools, Tests visuels, Automatisation des tests, Selenium
La dernière cellule de la liste sera ce que vous voulez. Ceci est compatible avec Excel sous Windows ou Mac.
J'utilise la méthode CONCATENATE
pour prendre les valeurs d'une colonne et en entourer les guillemets avec des colonnes entre les deux afin de renseigner rapidement la clause WHERE IN ()
d'une instruction SQL.
Je ne fais que taper =CONCATENATE("'",B2,"'",",")
, puis le sélectionner et le faire glisser vers le bas, ce qui crée =CONCATENATE("'",B3,"'",",")
, =CONCATENATE("'",B4,"'",",")
, etc. si nécessaire, éliminant ainsi la séparation des lignes. Cela fonctionne, mais encore une fois, ce n'est pas une bonne solution pour ceux qui en ont besoin tout le temps.