Permutations dans Excel

J'ai une string avec 6 espaces, par exemple 000000. Chaque espace peut contenir un des trois numbers – 0, 1 ou 2. Je sais que je peux get un total de 120 permutations en utilisant la fonction Permut dans Excel, c'est-à-dire = PERMUT ( 6,3) = 120. Mais j'aimerais bien avoir chaque permutation individuelle dans une cellule, par exemple 000001, 000010, etc. Idéalement, le résultat final serait de 120 lignes d'identifiants uniques de 6 numbers.

Aidez-nous si vous connaissez un moyen plus rapide d'accomplir cela sans entrer les numbers manuellement.

Merci!

Il existe une fonction VBA dans la dernière publication sur cette page . Copiez-le dans un module VBA, puis dans Excel, créez une colonne d'entiers de 0 à n où n = le nombre d'ID souhaité. Dans la colonne suivante, appelez la fonction VBA avec la valeur de la première colonne comme premier argument et 3 comme deuxième argument. Quelque chose comme

Column A Column b 0 =baseconv(A1, 3) 1 =baseconv(A2, 3) 2 =baseconv(A3, 3) ... etc. 

Vos identifiants ne sont vraiment que des valeurs incrémentales à l'aide d'un système de comptage de base 3. Vous pouvez formater la sortie pour get des zéros avancés avec un format personnalisé de '000000'.

Incidemment, avec 6 positions et 3 valeurs disponibles, vous pouvez get 3 ^ 6 ou 729 identifiants uniques

Tout d'abord, je ne pense pas que vous utilisez correctement PERMUT ici. Ce que PERMUT(6,3) vous donne est le nombre total de façons d'organiser trois choses choisies parmi un set de six choses. Donc, le résultat est de 120 car vous pourriez avoir 6 * 5 * 4 permutations possibles. Dans votre cas, vous disposez de 3 ^ 6 = 729 strings possibles, car chaque position comporte l'un des trois caractères possibles.

D'autres ont affiché des solutions parfaitement basées sur VBA, mais ce n'est pas si difficile à faire dans la feuille de calcul. Voici une formule de tableau qui renverra un tableau des six derniers numbers de la représentation ternaire (base-3) d'un nombre:

 =FLOOR(MOD(<the number>,3^({5,4,3,2,1,0}+1))/(3^{5,4,3,2,1,0}),1) 

(Comme le souligne WarrenG, il suffit d'get un tas de nombres de base 3, c'est une façon de résoudre votre problème.)

Vous pouvez faire glisser les numéros 0 à 728 dans une colonne quelque part, dire $ A $ 1: $ A $ 729. Ensuite, en $ B $ 1: $ G $ 1, mettez la formule:

 =FLOOR(MOD(A1,3^({5,4,3,2,1,0}+1))/(3^{5,4,3,2,1,0}),1) 

en se callbackant de l'entrer en tant que formule de tableau avec Ctrl-Shift-Enter. Ensuite, faites glisser vers le bas jusqu'à $ B $ 729: $ G $ 729.

Enfin, dans la cellule $ H $ 1, mettez la formule:

 =CONCATENATE(B1,C1,D1,E1,F1,G1) 

et faites glisser vers le bas jusqu'à $ H $ 729. Vous avez terminé!