更に挑んでみる
E〇CELを複数実行するという方法は、rand関数の仕様により断念となった。
そもそも、マクロを実行している間は、E〇CELに触れることさえ出来ない。マウスカーソルが丸いぐるぐるに変わったまま、びくともしない。
哀れな二体の
E〇CELの表示行を10倍の10万行にしてみれば……?
第二の猿案だが、前回の案よりかは自信がある。
少なくとも、10000行の時点では目立った遅延はない――つまり、まだPCスペックの限界まで来ていないと言えるのではないか。
10万行にしてみれば、動作が多少は遅くはなるだろう。演算時間は4倍か5倍くらいにはなるかもしれない。
しかし、10倍の量を実施してみて、5倍時間がかかったとしても、結果的には従来の倍速で実行出来たことになる。
これは結構、いい線いくかもしれない。
とは言え、9万行分をオートフィル、コピーするのも大変な作業だ。
マウスを下げ続ける簡単な作業ではあるが――100000行目のセルに到達するのに、一体何分かかることか。
仮にやりきったとしても、この作業を修正ごとに毎回やり直すことになる。
自然と溜息がこぼれた。これではいけない。
なんとか簡単になる方法はないのか。例えば、どこかのセルの行や列を指定して、そこまで選択出来る機能とか。
私は早速、知識の神に泣きついた――「ググえも~ん!!」
「e〇cel 指定行」と入力すると、候補に「e〇cel 指定行まで選択」というぴったりな言葉が挙がった。
中身を見てみると、指定行への選択は「ジャンプ」機能により実現が可能のようだ。
C1セルにカーソルが合った状態で「ctrl」キーと「G」キーを同時押しし、ジャンプ機能のダイアログを表示させる。
下部に参照先という入力エリアがあるので「C100000」と入力する。その後、「Shift」キーを押しながら「OK」ボタンを押すと、C1からC100000までのセルを全て選択することが出来た。
(ジャンプ自体は、C100000のセルへ移動するだけの機能だが、「Shift」キーを押しておくことで、範囲選択が可能となる)
さて、選択自体は出来たが、C10001からC100000の範囲に計算式を適用するにはどうしたらよいか。
実は「オートフィル」――隣接したセルの計算式や入力値を基に、値を設定する機能は、セルの右下部をドラッグする以外にも実現が可能だ。
「ホーム」タブの右端にある「編集」の中から「フィル」―「連続データの作成」を選択する。
ダイアログが出てくるので、範囲には「列」を、種類には「オートフィル」を選択して「OK」ボタンを押すだけ。
すると、少し時間はかかる(といっても数秒くらい)が、C100000まで乱数が生成された。
これを残りのセルにも適応すれば、10万行分の乱数生成機が完成するわけである。
マクロのソースも直さなくてはならないが、元々 1万行用に実装していた箇所を10万行に置き換えるだけなので、そこまで苦労はしないはずだ。
それから20分ほどして、実験の準備は整った。
以下が機能の概要となる。
・1回につき10万行出力し、それを53回繰り返す(これを1周期とする)。
・1周期(530万行)の中で最も『シェイクスピア』に近いものを出力する。
・1億行以上を出力させるため、19周期分実行する。これによる演算行数は1億と70万行となる。
この実行時間が30分台ならば倍速、15分台なら4倍速になる。
否が応でも期待せざるを得ない。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます