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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *