Jeg genererer et diagram med tilfeldige data:

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

Jeg brukte RAND for å generere verdiene, men vil ikke at de skal beregne hele tiden. Hvordan undertrykker du omberegningen av RAND?

Svar

Det korte svaret er «Du kan» t «(i det minste ikke uten skript). Imidlertid, med mindre arbeidet ditt er vitenskapelig, trenger du sannsynligvis ikke «tilfeldige» tall, bare uforutsigbare tall. (For å være teknisk, til og med RAND, genererer ikke true tilfeldige tall; snarere bruker den en kompleks algoritme for å … vel, generere et uforutsigbart nummer.)

Problemet, som du vet, er at RAND beregner på nytt. Men vi kan skrive et hvilket som helst antall formler som vil produsere «pseudo-tilfeldige» tall fra datoen. For eksempel, forutsatt at datoene dine er i kolonne A og dine «tilfeldige tall» i kolonne B, kan du sette noe slikt i B2 og kopiere ned så langt du trenger:

=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"))

Dette vil bruke datofunksjonene til å generere et» pseudo-tilfeldig «tresifret nummer.

Den altfor kompliserte formelen er ikke alt det viktig. Jeg knuste bare noen mattefunksjoner sammen. De kunne ha vært uendelige kombinasjoner av andre.

Men hvis du bare trenger et «unikt og ikke-gjentakende» tall – for eksempel som en utløser for plattform som Zapier — alt du virkelig trenger er det numeriske formatet på selve datoen:

=VALUE(A2)

… kopiert ned etter behov .

Enten formelen kan fungere som en matriseformel (dvs. plassert i en celle og fylle hele kolonnen) med mindre endringer:

=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))

Svar

Med et google script

tools> script edi tor

Lag deretter en funksjon. Du må koble funksjonen til en knapp eller en annen hendelse.

For å angi nummeret du trenger for å velge et område. Sett deretter verdien inn med og matrise av matriser. Tenk på det som en rekke rader.

Her er eksemplet mitt på Google-skriptet

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; } 

Svar

Jeg så på det samme spørsmålet i kveld og fant dette papiret: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf

Du kan bruke formlene i dokumentet til å lage din egen pseudo-tilfeldige tallgenerator på få minutter. Det vil gi deg en liste over tilfeldige tall som bare vil endres når du endrer frøet.

Svar

Jeg har en veldig enkel enkel løsning, to enkle små løsninger:

  • Med Excel også: Generer så mange tilfeldige tall du vil i Excel, kopier lim inn, ferdig

  • Notisblokk: Generer i Google Sheets, kopier lim inn i notisblokk, kopier deretter lim inn igjen, ferdig

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *