web-dev-qa-db-fra.com

Combinez deux colonnes dans une liste de toutes les combinaisons possibles d'entrées

J'ai deux colonnes telles que:

a   1 
b   2 
c 

et j'ai besoin de les combiner comme:

a   1
a   2
b   1
b   2
c   1
c   2

Est-ce possible avec une formule?

4
offa

Bien que ce soit un cas particulier de Dans une feuille de calcul Google, affichez toutes les combinaisons pour une sélection de colonnes Je pense qu'il est bon d'avoir une réponse plus simple spécifiquement pour le cas de deux colonnes. Le terme technique est "produit cartésien de deux ensembles".

J'utilise la même méthode que Rubén, qui nécessite un caractère qui n'apparaît pas dans les entrées de colonne. Rubén a utilisé la virgule dans son exemple. Je préfère quelque chose de plus exotique, par exemple char(9999), qui est un crayon: ✏.

Voici les formules pour joindre des colonnes A et B dans un produit cartésien:

Dans la cellule C1:

=transpose(split(join("", arrayformula(rept(filter(A1:A, len(A1:A))&char(9999), counta(B1:B)))), char(9999)))  

Dans la cellule D1:

=transpose(split(rept(join(char(9999), filter(B1:B, len(B1:B)))&char(9999), counta(A1:A)), char(9999)))

Explication

La formule en C:

  1. prend des entrées non vides en A
  2. met ✏ à côté de chacun
  3. répète chaque combinaison autant de fois qu'il y a d'entrées dans B
  4. les rejoint dans a✏ab✏b✏c✏c✏
  5. se scinde par caractère de crayon en une rangée a a b b c c
  6. transpose la ligne pour qu'elle devienne une colonne

La formule en D:

  1. prend des entrées non vides en B
  2. les rejoint, séparés par
  3. répète la chaîne entière autant de fois qu'il y a d'entrées dans A, obtenant 1✏2✏1✏2✏1✏2✏
  4. scinde un caractère au crayon en une rangée 1 2 1 2 1 2
  5. transpose la ligne pour qu'elle devienne une colonne
6
user79865