Jeg genererer et diagram med tilfældige data:
Date Value 1/1/2018 123 1/2/2018 453
Jeg brugte RAND
for at generere værdierne, men vil ikke have dem til at genberegne hele tiden. Hvordan undertrykkes genberegningen af RAND
?
Svar
Det korte svar er “Du kan” t “(i det mindste ikke uden script). Medmindre dit arbejde er videnskabeligt, behøver du sandsynligvis ikke “tilfældige” tal, bare uforudsigelige numre. (Faktisk, selvom RAND ikke genererer sandt tilfældige tal; snarere bruger den en kompleks algoritme til … ja, generere et uforudsigeligt nummer.)
Problemet, som du ved, er, at RAND genberegner. Men vi kan skrive et hvilket som helst antal formler, der producerer “pseudo-tilfældige” tal fra datoen. Hvis du for eksempel antager, at dine datoer er i kolonne A og dine “tilfældige tal” i kolonne B, kan du placere noget som dette i B2 og kopiere ned så langt som nødvendigt:
=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 bruger datofunktionerne til at generere et” pseudo-tilfældigt “3-cifret tal.
Den alt for komplicerede formel er ikke alt det vigtigt. Jeg knuste bare nogle matematiske funktioner sammen. De kunne have været uendelige kombinationer af andre.
Men hvis du bare har brug for et “unikt og ikke-gentagende” tal – for eksempel som en udløser for en platform som Zapier – alt hvad du virkelig har brug for, er det numeriske format for selve datoen:
=VALUE(A2)
… kopieret ned efter behov .
Enten formel kan fungere som en matrixformel (dvs. placeres i en celle og udfylde hele kolonnen) med mindre ændringer:
=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 en google script
værktøjer> script edi tor
Lav derefter en funktion. Du bliver nødt til at tilslutte funktionen til en knap eller en anden begivenhed.
For at indtaste det nummer, skal du vælge et interval. Indsæt derefter værdien med og array af arrays. Tænk på det som en række rækker.
Her er mit eksempel på Google-script
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 kiggede på det samme spørgsmål i aften og fandt dette papir: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf
Du kan bruge formlerne i dokumentet til at oprette din egen pseudo-tilfældige talgenerator på få minutter. Det giver dig en liste over tilfældige tal, der kun ændres, når du ændrer frøet.
Svar
Jeg har en meget enkel let løsning, to nemme små løsninger:
-
Også med Excel: Generer så mange tilfældige tal, som du vil i Excel, kopier indsæt, færdig
-
Notepad: Generer i Google Sheets, kopier pasta i notesblok, kopier derefter pasta tilbage i, færdig