Trier des nombres aleatoires en fonction des dizaines

Je génère un tableau de 10 colonnes et 20 lignes avec la formule [=RANDBETWEEN(1;1000)]

690 118 800 707 921 437 414 605 733 498

36 821 484 272 961 741 462 478 734 178

620 382 131 241 252 164 212 170 320 487

602 203 428 310 544 878 573 184 454 46

901 124 462 383 730 871 913 58 386 407

338 225 947 749 856 390 9 6 462 827

207 667 76 120 793 531 544 164 729 455

552 249 196 370 106 490 563 147 503 901

795 770 33 463 283 661 442 482 415 860

493 197 232 570 855 58 785 803 561 697

193 328 885 413 545 259 604 988 469 98

376 428 692 754 490 550 204 674 373 283

519 680 282 119 207 259 237 859 448 899

843 81 103 430 724 925 240 615 961 28

809 754 276 724 572 442 310 790 388 910

872 347 268 171 201 476 324 584 431 823

349 678 632 458 761 897 660 564 743 964

633 134 598 442 596 464 824 692 139 165

564 303 205 988 784 701 618 450 781 682

775 488 648 980 599 789 231 815 213 44

Ensuite j'ordonne les 200 valeurs avec la formule [=sort(flatten(A1:J20))]. Si un nombre est "sortit" plusieurs fois, il apparaîtra dans la colonne autant de fois qu'il est sortit.

Voici le résultat :

6
9
28
33
36
44
46
58
58
76
81
98
103
106
118
119
120
124
131
134
139
147
164
164
165
170
171
178
184
193
196
197
201
203
204
205
207
212
213
225
231
232
237
240
241
249
252
259
259
268
272
276
282
283
283
303
310
310
320
324
328
338
347
349
370
373
376
382
383
386
388
390
407
413
414
415
428
428
430
431
437
442
442
442
448
450
454
455
458
462
462
462
463
464
469
476
478
482
484
487
488
490
490
493
498
503
519
531
544
544
545
550
552
561
563
564
564
570
572
573
584
596
598
599
602
604
605
615
618
620
632
633
648
660
661
667
674
678
680
682
690
692
692
697
701
707
724
724
729
730
733
734
741
743
749
754
754
761
770
775
781
784
785
789
790
793
795
800
803
809
815
821
823
824
827
843
855
856
859
860
871
872
878
885
897
899
901
901
910
913
921
925
947
961
961
964
980
988
988

C'est là que cela se complique pour moi, je "regroupe" les valeurs par dizaines ordonnées croissantes et si la dizaine n'est pas représentée, alors sur sa ligne j’écris "X" majuscule et dans la cellule à droite j’écris la dizaine en gras

En le faisant manuellement :

6 9
X 10
28
33 36
44 46
58 58
X 60
76
81
98
103 106
118 119
120 124
131 134 139
147
X 150
164 164 165
170 171 178
184
193 196 197
201 203 204 205 207
212 213
225
231 232 237
240 241 249
252 259 259
268
272 276
282 283 283
X 290
303
310 310
320 324 328
338
347 349
X 350
X 360
370 373 376
382 383 386 388
390
407
413 414 415
428 428
430 431 437
442 442 442 448
450 454 455
462 462 462 463 464 469
476 478
482 484 487 488
490 490 493 498
503
519
X 520
531
544 544 545
550 552
561 563 564 564
570 572 573
584
596 598 599
602 604 605
615 618
620
632 633
648
X 650
660 661 667
674 678
680 682
690 692 692 697
701 707
X 710
724 724 729
730 733 734
741 743 749
754 754
761
770 775
781 784 785 789
790 793 795
800 803 809
815
821 823 824 827
X 830
843
855 856 859
860
871 872 878
885
897 899
901 901
910 913
921 925
X 930
947
X 950
961 961 964
X 970
980 988 988
X 990

On pourrait faire comme ceci ...

en L1, la liste des dizaines

=sequence(100;1;0;10)

en M1 à tirer vers le bas

=iferror(transpose(query({arrayformula({int(sort(flatten($A$1:$J$20))/10)*10\sort(flatten($A$1:$J$20))})};"select Col2 where Col1="&L1&" "));"X")

trouver une formule unique serait peut-être possible mais extrêmement complexe !

image

Bonjour,

Merci c'est super mais je ne comprends pas deux choses dans la formule :

=iferror(transpose(query({arrayformula({int(sort(flatten($A$1:$J$20))/10)*10\sort(flatten($A$1:$J$20))})};"select Col2 where Col1="&L1&" "));"X").

- [ \ ] de [ 10)*10\sort( ] c'est une sorte de OU ?

et

- [ Col1="&L1&" " ] de [ "select Col2 where Col1="&L1&" " ] "Col2" c'est automatiquement la colonne M mais aussi comment la formule écrit sur plusieurs colonnes pour une ligne de dizaine ?

- [ \ ] de [ 10)*10\sort( ] c'est une sorte de OU ?

et

- [ Col1="&L1&" " ] de [ "select Col2 where Col1="&L1&" " ] "Col2" c'est automatiquement la colonne M mais aussi comment la formule écrit sur plusieurs colonnes pour une ligne de dizaine ?

1-

dans une matrice virtuelle encadrée par {}

en FR et US ; veut dire empiler

en FR \ et en US , veut dire juxtaposer

il s'agit donc ici de juxtaposer des colonnes

2-

query sort plusieurs données, mettre transpose permet de les mettre en colonne

Ha d'accord... Mais sinon je n'arrive pas à désigner les lignes de dizaines où il y n'y a pas de valeurs et donc où il y a "X", j'ai essayé cela :

=QUERY ($L$1:$M$100; "SELECT L WHERE M="X" ")

Le champs de sélection est bon mais j'obtient Erreur => Erreur d'analyse de formule.... Comment chercher les lignes où il y a "X" et les afficher en colonne....

L'erreur est dûe à l'emploi de " autour de X

=QUERY ($L$1:$M$100; "SELECT L WHERE M="X" ")

Erreur => Erreur d'analyse de formule

=QUERY ($L$1:$M$100; "SELECT L WHERE M='X' ")

mais cela ne te donnera pas pour autant la réponse car query ne peut pas gérer un mix de nombres et de textes, 3 solutions

1- tout mettre en texte

=QUERY (arrayformula(to_text($L$1:$M$100)), "SELECT Col1 WHERE Col2='X' ")

2- remplacer X par 0 dans les formules random

3- utiliser filter

=filter (L1:L100, M1:M100="X")

Super !!! Je butte toujours sur la déclaration des colonnes....

[ Col1, Col2 ] dans [ "SELECT Col1 WHERE Col2='X' " ], j'imagine que [ ($L$1:$M$100) ] donne le champs de données mais je ne vois toujours pas comment Col1 désigne L et Col2 M ?

utilise les balises </> au-dessus du rectangle de réponse pour les rendre plus lisibles

dans query,

  • soit on interroge directement les colonnes (L1:M) et dans ce cas on utilise le caractère (L et M)
  • soit on applique par nécessité une transformation sur les données comme ici pour les passer en texte, alors le script ne connait plus les lettres des colonnes, on utilise dans ce cas Clo1, Col2 etc. qui sont respectivement les première, seconde, etc. colonnes issues de la transformation appliquée

Bonsoir,

Juste un ";" au lieu de ,

=filter (L1:L100, M1:M100="X")
=filter (L1:L100; M1:M100="X")

En tous les cas merci. J'aimerais savoir si je pourrais remplacer toutes les formules par un programme en Visual Basic ou encore Qbasic....

oui, il est possible de faire cela en google app script (javascript), mais quand je peux le faire avec des fonctions natives, pourquoi le faire avec un script ?

OK, c'est pour continuer et j'aime bien le "formalisme" de la programmation

Je vais chercher des informations sur "google app script", quelqu'un aurait des suggestions ?

Rechercher des sujets similaires à "trier nombres aleatoires fonction dizaines"