Ich generiere ein Diagramm mit zufälligen Daten:
Date Value 1/1/2018 123 1/2/2018 453
Ich habe RAND
, um die Werte zu generieren, aber nicht, dass sie ständig neu berechnet werden. Wie kann die Neuberechnung von RAND
unterdrückt werden?
?
Antwort
Die kurze Antwort lautet „Sie können“ t „(zumindest nicht ohne Skript). Sofern Ihre Arbeit nicht wissenschaftlicher Natur ist, benötigen Sie wahrscheinlich keine „Zufallszahlen“, sondern nur unvorhersehbare . (Um technisch zu sein, generiert selbst RAND nicht true Zufallszahlen, vielmehr wird ein komplexer Algorithmus verwendet, um … eine unvorhersehbare Zahl zu generieren.)
Wie Sie wissen, ist das Problem das RAND berechnet neu. Wir können jedoch eine beliebige Anzahl von Formeln schreiben, die ab dem Datum „Pseudozufallszahlen“ erzeugen. Angenommen, Ihre Daten befinden sich in Spalte A und Ihre „Zufallszahlen“ in Spalte B, könnten Sie so etwas in B2 einfügen und so weit wie nötig nach unten kopieren:
=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"))
Hiermit werden Datumsmerkmale verwendet, um eine“ pseudozufällige „dreistellige Zahl zu generieren.
Die übermäßig komplizierte Formel ist nicht alles wichtig. Ich habe gerade einige mathematische Funktionen zusammengeschlagen. Es könnten endlose Kombinationen anderer gewesen sein.
Wenn Sie jedoch nur eine „eindeutige und sich nicht wiederholende“ Zahl benötigen – zum Beispiel als Auslöser für a Plattform wie Zapier – alles, was Sie wirklich brauchen, ist das numerische Format des Datums selbst:
=VALUE(A2)
… nach Bedarf kopiert
Jede Formel kann mit geringfügigen Änderungen als Array-Formel (dh in einer Zelle platziert und die gesamte Spalte füllend) verwendet werden:
=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))
Antwort
Mit a google script
tools> script edi tor
Dann machen Sie eine Funktion. Sie müssen die Funktion an eine Schaltfläche oder ein anderes Ereignis anschließen.
Um die Nummer einzugeben, müssen Sie einen Bereich auswählen. Geben Sie dann den Wert in with und array of arrays ein. Stellen Sie sich das wie ein Array von Zeilen vor.
Hier ist mein Beispiel-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; }
Antwort
Ich habe heute Abend dieselbe Frage untersucht und dieses Papier gefunden: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf
Mit den Formeln in diesem Dokument können Sie in wenigen Minuten Ihren eigenen Pseudozufallszahlengenerator erstellen. Das gibt Ihnen eine Liste von Zufallszahlen, die sich nur ändern, wenn Sie den Startwert ändern.
Antwort
Ich habe eine sehr einfache einfache Lösung, zwei einfache kleine Problemumgehungen:
-
Auch mit Excel: Generieren Sie so viele Zufallszahlen wie Sie möchten in Excel, kopieren Sie Einfügen, fertig
-
Notizblock: In Google Sheets generieren, in den Notizblock kopieren, dann wieder einfügen, fertig