Monsieur Excel
Pour tout savoir faire sur Excel !

14 août 2012

Le plus petit entier unique

Dans un forum Excel que je consulte régulièrement, un challenge a été posé récemment. Plusieurs personnes (en colonne A) doivent proposer jusqu’à trois nombres entiers. Le but du jeu est d’avoir dans sa liste le plus petit nombre que personne d’autre n’a choisi.

Dans l’exemple ci-dessous, on voit en F1 et en F2 le résultat de notre tableau en A1:D12, soit la valeur 7.

Question : Quelle formule utiliser pour trouver le plus petit entier unique ?

Voici deux réponses intéressantes.

La première solution a été proposée par Elias Estrada, avec une formule matricielle, donc validée avec [Ctrl]-[Maj]-[Entrée].

Formule de F1 : =min(si(nb.si(B1:D50;B1:D50)=1;B1:D50))

La seconde solution, proposée par Stephen Dunn, ne requiert même pas de formule matricielle. Elle est en revanche sensiblement plus complexe :

Formule de F2 : =min(index($B$1:$D$50+10^9*((nb.si($B$1:$D$50;$B$1:$D$50)>1)+($B$1:$D$50=""));))

Je vous laisse le plaisir de la décortiquer pour comprendre son mode de fonctionnement… Cela revient à ajouter un grand nombre dès que la cellule concernée contient un nombre non unique ou est vide.

Remarque – On peut remplacer 10^9 par 100 si l’on est sûr que le plus petit nombre unique est inférieur à 100…

Pour pouvoir tester ces formules en « grandeur nature », je me suis amusé à créer des séries aléatoires pour les trois nombres proposés. Voici les formules que j’ai entrées en ligne :

B1 : =ent(1+9*alea())
C1 : =ent(B1+1+9*alea())

J’ai ensuite recopié C1 en D1, puis le bloc B1:D1 vers le bas…