「エクセルでセルにワークシート名を表示させるにはどうすればいいのでしょうか?」
Excelをお使いの方からいただく定番の質問の一つです。
VBA(Visual Basic for Applications)がわかる方だと、アクティブなWorkSheetオブジェクトのNameプロパティを取得するユーザー定義関数を作るのでしょうが、ワークシート関数だけでもシート名をセルに表示することは可能です。
ワークシート名を表示させたいセルに、
「=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))」
と入力する
関数の入れ子に慣れていない方の場合、この長い数式を見ただけでイヤになってしまうかもしれませんが、根気よく見ていけば一つ一つは決して難しいことをやっていません。
改行やインデントをするともう少し読みやすくなるかもしれません。
=RIGHT(
CELL("filename",A1),
LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))
)
以前、住所から県名以降を取得する方法をご紹介しましたが、シート名を取得するのも実はまったく同じことです。
RIGHT関数は、第1引数で指定された文字列の右側から、第2引数で指定した文字数分の文字列を返してくれます。
今回のRIGHT関数の第1引数は、
「CELL("filename",A1)」
第2引数は、
「LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))」
です。
3回も出てきているCELL関数は、第2引数で指定されたセルの情報を取得するのが主な役割ですが、第1引数で「"filename"」を指定すると、「絶対パス名+[ファイル名]+シート名」を取得することができます。
つまり、RIGHT関数の第1引数には、「絶対パス名+[ファイル名]+シート名」を指定していることになります。
なお、CELL関数でセルの情報を取得する場合は、情報を取得したいセルを指定しますが、今回は「絶対パス名+[ファイル名]+シート名」を取得するためですから、どのセルを指定しても構わないのでとりあえずA1セルを指定しています。
次にRIGHT関数の第2引数を見てみましょう。
「LEN(CELL("filename",A1))」の部分は、何文字あるか数えてくれる関数=LEN関数を使って、「絶対パス名+[ファイル名]+シート名」が何文字あるかを調べています。
「FIND("]",CELL("filename",A1))」の部分は、「絶対パス名+[ファイル名]+シート名」の中でファイル名の後に表示される「]」が何文字目にあるのかを調べています。
ですから、例えば「LEN(CELL("filename",A1))」が25文字で、「FIND("]",CELL("filename",A1))」が20文字ならば、25文字-20文字=5文字がシート名部分の文字数になります。
よって、RIGHT関数で「絶対パス名+[ファイル名]+シート名」からシート名の文字数分の文字列を取得すれば、ワークシート名が取得できるというわけです。
説明を読むだけではなかなかわかりにくいでしょうから、
「CELL("filename",A1)」
「LEN(CELL("filename",A1))」
「FIND("]",CELL("filename",A1))」
がそれぞれどんな値を返してくるのかを是非試してみてください。
それから、まだ保存されていない新規ファイルでは「CELL("filename",A1)」で何も取得できないために、「=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))」を指定しても#VALUE!エラーとなります。一度は保存の行なわれたファイルで試してみてください。
- Newer:印刷時の文字サイズ
- Older:AutoExecマクロと起動時の設定
Home » Excel(エクセル)の関数・数式の使い方 » 文字列 » ワークシート名をセルに表示−CELL・FIND・LEN・RIGHT関数