Je génère un graphique avec des données aléatoires:

Date Value 1/1/2018 123 1/2/2018 453 

Jai utilisé RAND pour générer les valeurs, mais vous ne voulez pas quelles recalculent tout le temps. Comment supprimer le recalcul de RAND?

Réponse

La réponse courte est « Vous pouvez » t « (du moins pas sans script). Cependant, à moins que votre travail ne soit de nature scientifique, vous n’avez probablement pas besoin de nombres «aléatoires», juste des nombres imprévisibles . (En fait, pour être technique, même RAND ne génère pas vrai nombres aléatoires; il utilise plutôt un algorithme complexe pour … eh bien, générer un nombre imprévisible .)

Le problème, comme vous le savez, est que RAND recalcule. Mais nous pouvons écrire nimporte quel nombre de formules qui produiront des nombres « pseudo-aléatoires » à partir de la date. Par exemple, en supposant que vos dates sont dans la colonne A et vos « nombres aléatoires » dans la colonne B, vous pouvez mettre quelque chose comme ça dans B2 et copier autant que nécessaire:

=VALUE(TEXT(INT(((A2*COS(DAY(A2))*PI())-INT(A2*COS(DAY(A2))*PI()))*1000)+IF(INT(((A2*COS(DAY(A2))*PI())-INT(A2*COS(DAY(A2))*PI()))*1000)<100,WEEKDAY(A2)*100,0),"000"))

Cela utilisera les caractéristiques de la date pour générer un nombre à 3 chiffres » pseudo-aléatoire « .

La formule trop compliquée nest pas tout cela important. Je viens de briser certaines fonctions mathématiques ensemble. Elles auraient pu être des combinaisons infinies dautres.

Cependant, si vous avez juste besoin dun nombre « unique et non répétitif », par exemple, comme déclencheur dun plate-forme comme Zapier – tout ce dont vous avez vraiment besoin est le format numérique de la date elle-même:

=VALUE(A2)

… copié si nécessaire .

Les deux formules peuvent fonctionner comme une formule matricielle (cest-à-dire placée dans une cellule et remplissant toute la colonne) avec des modifications mineures:

=ArrayFormula(IF(A2:A = "", "", VALUE(TEXT(INT(((A2:A*COS(DAY(A2:A))*PI())-INT(A2:A*COS(DAY(A2:A))*PI()))*1000)+IF(INT(((A2:A*COS(DAY(A2:A))*PI())-INT(A2:A*COS(DAY(A2:A))*PI()))*1000)<100,WEEKDAY(A2:A)*100,0),"000")))

=ArrayFormula(IF(A2:A = "", "", VALUE(A2:A))

Répondre

Avec un script google

outils> script edi tor

Ensuite, créez une fonction. Vous devrez relier la fonction à un bouton ou à un autre événement.

Afin de saisir le numéro, vous devez sélectionner une plage. Ensuite, mettez la valeur avec et tableau de tableaux. Pensez-y comme un tableau de lignes.

Voici mon exemple de script Google

function generateNumbers () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var randNumberRows = [] var i; for (i = 0; i < 20; i++) { var row = [] row.push(randInt(-20,20)); row.push(randInt(-20,20)); row.push(randInt(-20,20)); randNumberRows.push(row); } var range = sheet.getRange("A2:C21"); range.setValues(randNumberRows); } function randInt(start, end) { // range is from start to end + 1 so it is inclusive r = end - start + 1 return Math.floor(Math.random() * r) + start; } 

Réponse

Jétais à la recherche de la même question ce soir et jai trouvé ce document: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf

Vous pouvez utiliser les formules de ce document pour créer votre propre générateur de nombres pseudo-aléatoires en quelques minutes. Cela vous donnera une liste de nombres aléatoires qui ne changeront que lorsque vous changerez la graine.

Réponse

Jai un très solution simple et facile, deux petites solutions de contournement faciles:

  • Avec Excel également: générez autant de nombres aléatoires que vous le souhaitez dans Excel, copiez-collez, cest fait

  • Bloc-notes: générez dans Google Sheets, copiez-collez dans le bloc-notes, puis copiez-collez à nouveau, terminé

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *