web-dev-qa-db-fra.com

Empiler plusieurs colonnes sur une seule?

J'utilise Google SpreadSheet et j'essaie d'avoir plusieurs feuilles contenant une liste de mots. Sur la feuille finale, je voudrais créer une liste sommative, qui est une combinaison de toutes les valeurs de la colonne. Je l'ai fait fonctionner en utilisant = CONCATENATE (), mais il l'a transformé en chaîne. Est-il possible de le conserver sous forme de liste de colonnes?

Voici un exemple sous forme de colonnes:

Sheet1

  • Apple
  • orange
  • banane

Sheet2

  • ananas
  • fraise
  • Pêche

FinalSheet

  • Apple
  • orange
  • banane
  • ananas
  • fraise
  • Pêche
43
abritez

Réponse mise à jour

J'étais juste là est une bien meilleure solution. Il a été posté ci-dessous, mais je le copie ici, donc c'est dans la première réponse:

=unique({A:A;B:B})

Avertissement: cela inclura une cellule vide dans certains scénarios (comme s'il y en avait une à la fin de la première liste).

Si vous n'êtes pas concerné par la commande et une cellule vide de queue, une simple sort() va nettoyer les choses:

=sort(unique({A:A;B:B}))

Sinon, une filter() peut supprimer les blancs comme ceci:

=filter(unique({A:A;B:B}),NOT(ISBLANK(unique({A:A;B:B}))))

Ce qui suit est l'ancienne obsolète réponse

Je suis convaincu qu'il s'agit de "La mauvaise façon de le faire", car cela semble une tâche tellement simple et absurde que je pense que je dois manquer quelque chose car cela ne devrait pas nécessiter une solution aussi exagérée.

Mais cela fonctionne:

=UNIQUE(TRANSPOSE(SPLIT(JOIN(";",A:A,B:B),";")))

Si vos données contiennent des ';' vous aurez naturellement besoin de changer le délimiteur.

71
Lake

La manière de base, c'est juste de le faire comme des tableaux comme ça

={A1:A10;B1:B10...etc}

Le problème avec cette méthode, comme je l'ai découvert, c'est que cela prend beaucoup de temps si vous avez beaucoup de colonnes. J'ai fait quelques recherches et j'ai trouvé cet article:

Joindre plusieurs colonnes en une seule colonne triée dans les feuilles de calcul Google

La formule de base est

=transpose(split(arrayformula(concatenate(if(len(A:Z)>0,A:Z&";",""))),";"))

De toute évidence, vous remplaceriez le A: Z dans la plage que vous souhaitez utiliser. Et si vous voulez trier ou supprimer les doublons, vous devez simplement envelopper la formule ci-dessus dans une méthode SORT() et/ou UNIQUE(), comme ça ..

=sort(unique(transpose(split(arrayformula(concatenate(if(len(A:Z)>0,A:Z&";",""))),";"))))

J'espère que cela t'aides. Heureux de coder tout le monde :)

10
PowerAktar

Vous pouvez utiliser ceci:

=unique({A1:A;B1:B})

Fonctionne parfaitement ici!

7
Diego Contezini

Beaucoup plus simple:

={sheetone!A2:A;sheettwo!A2:A}
5
cyrilchampier

La fonction unique() supprime les espaces vides, mais ne m'a pas été utile car certaines de mes lignes se répètent. Au lieu de cela, je filtre d'abord les colonnes par len() pour supprimer les cellules vides. Ensuite, je combine les colonnes ensemble de la même manière.

={filter(A:A, len(A:A)); filter(B:B, len(B:B))}

5
grayob