オートコンプリートが動作しない
Excel の「オートコンプリート」っていうのは、テキストを入力するとき、すでに入力済のテキストを元にして残りのテキストを自動的に予測 & 補完してくれる機能のことですね。
たとえば下図のように(B3 に “cat” と入力済みの場合)B5 に “c” と入力しただけで残りの “at” まで予測 & 補完してくれてるわけですね。
ところがですね・・・ある日 Excel で入力作業をしていたら、「あれ? オートコンプリートが利かない。変だな?」と思うことがありました。
たとえば下図のように、B3 に “cat” と入力済みであるにもかかわらず、B7 でオートコンプリートが動作しなかったんです。
「おかしいな」と思って、オートコンプリートの設定を何度もオンにしたりオフにしたり、Excel を再起動したりして試しましたが、結果は変わらず。
オプション設定の問題では無かったので「Excel のバグかな?」と思い始めた頃、オートコンプリートが働くセルと働かないセルがあることに気付きました。
たとえば、下図の水色のセルの “cat” の場合、黄色のセルではオートコンプリートが働くのに、それ以外のセルでは働かない。
同様に “monkey” を調べてみると、もっと不思議です。下図の黄色のセルではオートコンプリートが働きますが、それ以外のセルでは働きません。
上図で途中のセル(B7 と B8)がスキップされている(オートコンプリートが働かない)のは、いったい何故・・・??
オートコンプリートの動作条件に疑問を持ったので調べてみました。
オートコンプリートが動作する条件
ルール1:同じ列でなければならない
前述の図を見れば明らかですが、オートコンプリートが動作するセルは、対象テキストと同じ列のセルに限られます。
ルール2:同じ領域でなければならない。ただし・・・
オートコンプリートが動作するためには、対象テキストと同じ領域にあるセルでなければなりません。
「同じ領域」とは何でしょう?
実は Excel のそれぞれのセルは、自分の領域(テリトリー、縄張りとでも言いましょうか)を持っています。
たとえば、”monkey” のセルが持つ領域はどの範囲になるでしょう? “monkey” のセルを選択してからキーボードの Ctrl + Shift + * を同時に押してみると分かります。
上図のように “monkey” の領域が選択されました。
“monkey” の領域が分かったところで、”monkey” のオートコンプリートが動作するセルをもう一度見てみましょう。下図の黄色のセルがそれです。
- ルール1:同じ列
- ルール2:同じ領域
・・・変ですね。ルール2に当てはまらないセルがあります。何故でしょう?
それは・・・ルール2には「ただし・・・」という条件があるからです。意地悪してスミマセン。
ルール3:ただし「同じ領域」とは動作対象のセルを起点とする領域
オートコンプリートが動作する領域は、元のテキストがあるセルを起点として考えるのではなく、オートコンプリートを動作させたいセルを起点として考えます。
たとえば、どうして “monkey” のオートコンプリートが動作しないセルを途中に挟んで B6 のセルではオートコンプリートが動作するのでしょう?
B6 を選択して Ctrl + Shift + * を押してみるとそれが分かります。
かなり広い範囲が選択されましたね。つまり、B6 のセルの領域内 & 同じ列に “monkey” のセルがあるので、B6 で “monkey” のオートコンプリートが動作するわけです。
ちなみに、お気付きかと思いますが、B6 のセルでは、”monkey” だけでなく “cat” のオートコンプリートも動作します。
“monkey” のオートコンプリートが動作する B6 セルと “monkey” のセルの間にあるにもかかわらず、オートコンプリートが動作しない B7 と B8 の領域についても確認してみましょう。
下図の左が B7 の領域(B7、B8、A7、A8)、右が B8 の領域(B8、A8)になります。
いずれの領域にも “monkey” のセルが含まれないので、オートコンプリートが動作しないわけですね。
条件を満たしてもオートコンプリートが動作しない場合
前述の条件を満たしてもオートコンプリートが動作しない場合があります。
たとえば下図の B4 のセルで “white ” まで入力してもオートコンプリートは動作しません。
考えてみれば当然ですが、”white ” まで入力しても、”white cat” と補完すれば良いのか “white dog” と補完すれば良いのか、判断できないからですね。
この場合、”white c” または “white d” まで入力すればオートコンプリートが動作し始めます。
参考:セルの領域はどのようなルールで決められるのか
前述のように、セルの領域は、そのセルを選択して Ctrl + Shift + * を押せば分かります。
では、セルの領域を調べるには、それらのキーを押さないと分からないのでしょうか?
いいえ。一応、領域が決められるルールを理解すれば(キーを押さずに)目視でも予想できます。領域が広いと大変ですけどネ。
そのルールとは・・・「接触感染ルール」とでも言いましょうか。(不健康そうなセンスの無いネーミングでスンマセン)
さきほどの B6 セルを例に見てみましょう。
まず、B6 に接触している(中身がある)セルはどこでしょう? C5 の “dog” のセルですね。従って、まず B6 と C5 を含む矩形が B6 の領域となります(下図では分かりやすいように領域を選択しています)。
では更に、上図で選択されている領域に接触している(中身がある)セルは? D4 の “frog” と D7 の “mouse” のセルですね。B6 セルはこれらのセルも取り込んで、下図のように領域を広げます。
同様のことを繰り返して B6 は領域の拡大を続け、ついには下図のような広大な(?)領域を手に入れるわけですね。
接触感染対象のセルは、テキストが表示されているセルとは限りません。
テキストが何も表示されていないセルでも、そこに式が設定されているならば、接触感染の対象となります。
まとめ
- オートコンプリートが有効になる条件は、
- 動作対象のセルの領域内に対象テキストがある場合
且つ、 - 動作対象のセルと同じ列に対象テキストがある場合
- 動作対象のセルの領域内に対象テキストがある場合
- 各セルは、それぞれ固有の領域を持っている
- 各セルの領域は、そのセルを選択して Ctrl + Shift + * を押せば分かる
- 各セルの領域は「接触感染ルール」(?)に従って決定される
おまけ:特定のセルのオートコンプリートが邪魔なとき
オートコンプリートを完全に停止したい場合は、この記事の最初のほうで紹介しているオプションをオフにすればOKです。
でも、オートコンプリートの機能そのものは停止したくないけれど、特定のセルでオートコンプリートが動作するのが邪魔と感じることがあります(ないですか?)。
そういう場合は、オートコンプリートが動作した時点で(補完文字列が表示されたとき) Delete キーを押しましょう。そうすれば補完文字列が削除されます。