更に挑んでみる


 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倍速になる。

 否が応でも期待せざるを得ない。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る