飽くなき減量(後編)
よく考えてみればだ。
一文字ずつカタカナ文字を変換させた後、わざわざ、別セルを用いて結合する必要なんてどこにもない。
結合文字を出力する際に、変換処理も同時にやればいいだけのことではないか。そうなれば、一文字に変換する為だけのセルは不要になる。
一致しているかを「〇」「×」で表示させるセルも同様に要らないはずだ。一致文字数を出す時に、同時に一致判定もすればいい。
たったこれだけのことで、140000もの計算式を消すことが出来る。
家に帰った私は早速、「無限の猿定理.xlsm」に手を加えることにした。
修正点は以下の2か所に集約される。
・J列~P列(乱数に対応したカタカナを出す部分)を削除し、かわりにQ列の計算式をこのように修正。
「=VLOOKUP(C1,$A$1:$B$83,2,TRUE)&VLOOKUP(D1,$A$1:$B$83,2,TRUE)&…(中略)…&VLOOKUP(I1,$A$1:$B$83,2,TRUE)」
何をやったか。J列からP列までの計算式を全て一つのセルにまとめて「&」で結合した――たったこれだけである。
・Y列~AE列(一文字ごとに対象と一致しているかを確認する部分)を削除し、かわりにAF列の計算式をこのように修正。
「=IF(MID(Q1,1,1)=$R$1,1,0)+IF(MID(Q1,2,1)=$S$1,1,0)+…(中略)…+IF(MID(Q1,7,1)=$X$1,1,0)」
これは一見すると分かり難いが、要はQ列で生成された文字列の一文字目と「シ」を比較、二文字目を「ェ」と比較……を繰り返し、一致すれば「1」を足しているというだけである。
(「MID」関数は対象文字列の何文字目から何文字抜き取るかを設定することで、条件に合った文字列を返却する機能を持つ。上記式の「MID(Q1,7,1)」とは、「Q1にある文字列の7文字目から1文字抜き取る」という意味となる)
修正自体は15分もかからないものだった。
全体をざっと確認し、表示に誤りがないかをチェック出来たところで、早速、実行してみることにした。
実行結果は以下の通り。
1回目:9.53秒――シゲイメスチア
2回目:9.70秒――シミゾクスカプ
3回目:9.52秒――パオイクンゼア
実行画面が出た時、不覚にも軽く噴き出してしまった。
ここにきて、まさかの半減である。
値付きのセル数は、修正前が「230360個」だったのに対して、現在は「90360個」であるから、計算式の複雑さによって実行時間に差はあるにせよ、概ねセルの数がそのまま実行時間に連動しているのだろう。
これはつまり――絞り込むことさえ出来れば、実行時間は更に少なくなることに他ならない。
まだ、希望はある。
そんな思いを抱かせるには十分過ぎる結果となった。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます