Jag genererar ett diagram med slumpmässiga data:
Date Value 1/1/2018 123 1/2/2018 453
Jag använde RAND
för att generera värdena, men vill inte att de ska räkna om hela tiden. Hur kan man undertrycka omberäkningen av RAND
?
Svar
Det korta svaret är ”Du kan” t ”(åtminstone inte utan skript). Men såvida inte ditt arbete är vetenskapligt till sin natur behöver du förmodligen inte ”slumpmässiga” siffror, bara oförutsägbara sådana. (För att vara tekniskt genererar inte ens RAND true slumpmässiga siffror; snarare använder den en komplex algoritm för att … ja, generera ett oförutsägbart nummer .)
Problemet, som du vet, är att RAND räknar om. Men vi kan skriva valfritt antal formler som kommer att producera ”pseudo-slumpmässiga” siffror från datumet. Om du till exempel antar att dina datum finns i kolumn A och dina ”slumpmässiga siffror” i kolumn B kan du lägga något liknande i B2 och kopiera ner så långt som behövs:
=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"))
Detta använder datumets funktioner för att generera ett” pseudoslumpmässigt ”tresiffrigt nummer.
Den alltför komplicerade formeln är inte allt som viktigt. Jag krossade bara några matematiska funktioner tillsammans. De kunde ha varit oändliga kombinationer av andra.
Men om du bara behöver ett ”unikt och icke-upprepande” nummer – till exempel som en utlösare för en plattform som Zapier – allt du verkligen behöver är det numeriska formatet för själva datumet:
=VALUE(A2)
… kopieras ned efter behov .
Endera formeln kan fungera som en matrisformel (dvs. placeras i en cell och fylla hela kolumnen) med mindre ändringar:
=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
tools> script edi tor
Gör sedan en funktion. Du måste ansluta funktionen till en knapp eller någon annan händelse.
För att ange numret måste du välja ett intervall. Lägg sedan in värdet med och matrisen av matriser. Tänk på det som en rad rader.
Här är mitt exempel på Google-skript
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
Jag tittade på samma fråga ikväll och hittade detta papper: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf
Du kan använda formlerna i det dokumentet för att skapa din egen pseudoslumpgenerator på några minuter. Det ger dig en lista över slumpmässiga siffror som bara kommer att ändras när du byter frö.
Svar
Jag har en mycket enkel enkel lösning, två enkla små lösningar:
-
Med Excel också: Skapa så många slumpmässiga nummer som du vill i Excel, kopiera klistra in, gjort
-
Anteckningsblock: Skapa i Google Sheets, kopiera klistra in i anteckningsblock och kopiera sedan klistra in igen, gjort