ランダムデータを使用してグラフを生成しています:

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

で値を生成しますが、常に再計算する必要はありません。RANDの再計算を抑制する方法は?

回答

簡単な答えは「できません」です(少なくともスクリプトなしでは)。ただし、作業が本質的に科学的でない限り、おそらく「乱数」は必要なく、予測できないだけです(実際、技術的には、RANDでさえ trueを生成しません) 乱数。むしろ、複雑なアルゴリズムを使用して…まあ、予測できない数を生成します。)

問題は、ご存知のとおり、RANDです。再計算します。ただし、日付から「疑似乱数」を生成する数式はいくつでも記述できます。たとえば、日付が列Aにあり、「乱数」が列Bにあるとすると、次のようなものをB2に入れて、必要なだけコピーすることができます。

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

これは、日付の機能を使用して「疑似乱数」の3桁の数字を生成します。

過度に複雑な数式はそれだけではありません。重要です。いくつかの数学関数を一緒に壊しました。それらは他の関数の無限の組み合わせである可能性があります。

ただし、「一意で繰り返しのない」数値が必要な場合、たとえば、 Zapierのようなプラットフォーム—本当に必要なのは日付自体の数値形式だけです:

=VALUE(A2)

…必要に応じてコピーします。

どちらの数式も、小さな変更を加えて配列数式として機能できます(つまり、1つのセルに配置し、列全体を埋めます)。

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

回答

googleスクリプト

ツール>スクリプトedi tor

次に、関数を作成します。関数をボタンまたはその他のイベントに接続する必要があります。

数値を入力するには、範囲を選択する必要があります。次に、値をwithとarray ofarraysに入れます。行の配列のように考えてください。

これが私のサンプル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; } 

回答

今夜同じ質問を調べていたところ、次の論文が見つかりました: https://www.ssl.berkeley.edu/~mlampton/RandomSpreadsheet4.pdf

そのドキュメントの式を使用して、数分で独自の疑似乱数ジェネレータを作成できます。これにより、シードを変更した場合にのみ変更される乱数のリストが表示されます。

回答

非常にシンプルで簡単な解決策、2つの簡単な回避策:

  • Excelでも:Excelで必要な数の乱数を生成し、コピーして貼り付け、完了

  • メモ帳:Googleスプレッドシートで生成し、メモ帳にコピーして貼り付けてから、コピーして貼り付けます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です