エクセル術

セルにシート名を表示する


ヘッダーには &[シート名] でシート名を表示するのは簡単で知られていますが、セルに表示する方法は単純ではありませんが、ちょっと一手間加えた関数で表示することが出来ます。文字列操作の応用になります。

CELL関数

あまり使い慣れないCELL関数というモノを使います。
CELL関数とは参照のセルの色々な情報を引き出せる関数で、そのエクセルファイル名というのも引き出せます。エクセルフィイル名というと「決算書.xls」などそういうものになるんですが、このCELL関数で引き出すファイル名は
D:\[決算書.xls]Sheet1 というように絶対パスでファイルの保存場所からそのセルのシート名までを引き出します。

=CELL(“filename“,A1)
このダブルクォーテーションで括った filename という引数を指定するとファイル名を返します。

あとはSheet1だけを抜き出すだけ

です。
簡単に言いましたが、ではどうするのか?
この抜き出されたファイル名をよく見てください。実ファイル名は [ ] で囲まれていますよね。その後ろにシート名が来ている。
わかりますか?
] の後ろにシート名です。
MID関数では指定した文字数の場所から指定した文字数分だけ引き出せます。「あいうえお」という文字の3文字目から2文字抜き出す「うえ」という事が出来ます。
ですから ] の文字が何文字目にあるのか?というのが分かればシート名だけを抜くことが出来るのです。

これはFIND関数というのを使います。FIND関数は指定した文字が最初に現れる位置を検索します。「あいうえお」で「う」は頭から何番目?ということで3を返します。
これで ] の位置を探し、MID関数でこの位置の1つ後ろから最後までを抜くとシート名だけ抜く事ができます。

=MID(CELL(“filename”,A1),FIND(“]”,CELL(“filename”,A1))+1,31)

これが最終的な式になります。分解して考えると
MID( 全ファイル名 , FINDで全ファイル名から]の文字位置検索 +1 , 31文字引っこ抜く)
31文字というのはSheetの制限文字数です。Excel2010まではこれを超えてのシート名を設定することが出来ませんので31にしております。99とかでも全然問題ないですけどね。

モバイルバージョンを終了