現在操作しているブックやワークシートの名称をセルに表示するにはどうしたらいいだろうか。マクロを使えば可能だが、たったそれだけのことで難解なマクロに手を出すのは気が引ける。何とかワークシート関数だけでブック名やシート名を取得できないものだろうか。
そこで、いくつかの関数を組み合わせて関門を突破することにしよう。キーとなるのはCELL関数。CELL関数は情報関数と呼ばれるジャンルに属しており、指定したセルの属性や表示形式などを返す関数だ。たとえば、「=CELL("protect",A1)」と入力したとき、A1セルが保護されていれば0を、保護されていなければ1を返す。
このCELL関数に「"filename"」を指定すると、アクティブブックの名前とアクティブシート名を返すのだ。A1セルに「=CELL("filename")」と入力してみよう。(図1)
ただし、CELL関数が返すのは「パス名+[ファイル名]+シート名」といった連続したデータ。ここから必要な情報だけを抜き出すことになる。最初のパス名は、先頭から[の直前までになる。そこでFIND関数で[の位置を調べてLEFT関数で抜き出す。「=LEFT(A1,FIND("[",A1)-1)」と入力しよう。これでパス名が抜き出される(図2)。
ファイル名は[ ]で囲まれているので、[ の次から ] の直前までを抜き出す。これにはMID関数とFIND関数を使う。「=MID(A1,FIND("[",A1)+1,FIND("]",A1)-FIND("[",A1)-1)」と入力する(図3)。
最後のシート名は ] から後ろ全部なので、文字列の右側を抜き出すRIGHT関数と文字数を調べるLEN関数を使えばいい。「=RIGHT(A1,LEN(A1)-FIND("]",A1))」と入力すれば、シート名が表示される(図4)。
図1 A1セルに図のように入力してみよう。シート名が表示される |
図2 FIND関数で調べた[ の位置まで、左側からLEFT関数で抜き出す。これでパス名が抜き出される |
図3 [ と ]の位置をFIND関数で調べる。MID関数は指定した範囲を抜き出す関数だ。ここではブック名が表示される |
図4 FIND関数で調べた ] の位置から、右側をRIGHT関数で抜き出す。ようやくシート名が抜き出された |