Generuję wykres z losowymi danymi:

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

Użyłem RAND, aby wygenerować wartości, ale nie chcę, aby przez cały czas ponownie obliczały. Jak powstrzymać ponowne obliczanie RAND?

Odpowiedź

Krótka odpowiedź brzmi: „Potrafisz” t „(przynajmniej nie bez skryptu). Jednakże, chyba że twoja praca ma charakter naukowy, prawdopodobnie nie potrzebujesz „losowych” liczb, a jedynie te nieprzewidywalne . (W rzeczywistości, mówiąc technicznie, nawet RAND nie generuje prawda liczby losowe; raczej używa złożonego algorytmu, aby … cóż, wygenerować nieprzewidywalną liczbę.)

Problem, jak wiesz, polega na tym, że RAND przelicza. Ale możemy napisać dowolną liczbę formuł, które dadzą liczby „pseudolosowe” od daty. Na przykład zakładając, że Twoje daty znajdują się w kolumnie A, a „liczby losowe” w kolumnie B, możesz umieścić coś takiego w kolumnie B2 i skopiować w razie potrzeby:

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

To użyje funkcji daty do wygenerowania„ pseudolosowej ”3-cyfrowej liczby.

Zbyt skomplikowana formuła to nie wszystko ważne. Właśnie rozłożyłem razem kilka funkcji matematycznych. Mogłyby to być nieskończone kombinacje innych.

Jednak jeśli potrzebujesz tylko „unikalnej i niepowtarzalnej” liczby – na przykład jako wyzwalacza dla platforma taka jak Zapier – wszystko, czego naprawdę potrzebujesz, to format numeryczny samej daty:

=VALUE(A2)

… skopiowany w razie potrzeby .

Każda formuła może działać jako formuła tablicowa (tj. umieszczona w jednej komórce i wypełniająca całą kolumnę) z niewielkimi zmianami:

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

Odpowiedź

Za pomocą skrypt google

narzędzia> skrypt edi tor

Następnie utwórz funkcję. Będziesz musiał podłączyć funkcję do przycisku lub innego zdarzenia.

Aby wprowadzić liczbę, musisz wybrać zakres. Następnie umieść wartość w with i tablicę tablic. Pomyśl o tym jak o tablicy wierszy.

Oto mój przykładowy skrypt Google

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

Odpowiedź

Zajrzałem dziś wieczorem do tego samego pytania i znalazłem ten artykuł: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf

Możesz użyć formuł w tym dokumencie, aby w kilka minut utworzyć własny generator liczb pseudolosowych. To da ci listę liczb losowych, które zmienią się tylko wtedy, gdy zmienisz ziarno.

Odpowiedź

Mam bardzo proste, łatwe rozwiązanie, dwa łatwe obejścia:

  • Również w Excelu: wygeneruj tyle liczb losowych, ile chcesz w Excelu, skopiuj, wklej, gotowe

  • Notatnik: wygeneruj w Arkuszach Google, skopiuj wklej do notatnika, a następnie skopiuj wklej z powrotem, gotowe

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *