本記事ではエクセルでシート名を取得しセルに表示する方法をご紹介します。コピペでOKかつ関数のみで使用できるため、どなたでも簡単にご使用いただけます。取得したシートの名前に応じて異なる処理を実行したい場合などにお使いいだけます。
セルが存在するシートの名前を取得し、表示したい
結論: エクセルでシート名を取得しセルに表示する方法
下記の式を任意のセルに貼り付けることで、そのセルが存在するシート名を取得できます。
(詳しい解説はこちらのセクションで行っています。)
=TEXTAFTER(CELL("filename", A1), "]")
なお、#NAME?エラーが発生してお使いいただけない場合は、TEXTAFTER関数を代用する方法をお試しください。
=RIGHT(CELL("filename", A1), LEN(CELL("filename", A1))-SEARCH("]", CELL("filename", A1)))
以下でそれぞれの数式を詳細に解説します。
CELL関数とTEXTAFTER関数を使用してシート名を取得する
先に紹介した通り、下記の関数を使用して任意のセルにそのセルが存在するシート名を動的に取得することができます。ここでは、CELL関数とTEXTAFTER関数を使用しており、これらの関数を使用してどのようにExcel (エクセル) のシート名を取得しているか解説します。
=TEXTAFTER(CELL("filename",A1),"]")
CELL関数でシート名を含むファイルのメタ情報を取得する
まず、CELL関数についてですが、下記の書式で使います。(参考: 公式ドキュメント)
=CELL(検査の種類, [対象範囲])
今回は検査の種類に“filename”、対象範囲にA1
を指定しているため、こちらの関数は現在のエクセルファルが存在するフォルダなどのパスとファイル及びシート名の情報が表示されます。
=CELL("filename", A1)
>> "C:\Users\User\フォルダ名\[ファイル名.xlsx]Sheet1"
TEXTAFTER関数でシート名のみを抜き出す
次に、こちらの情報からシート名、つまり“]”より後の情報を抜き出すためにTEXTAFTER関数を使用します。TEXTAFTER関数の書式は下記のとおりです。(参考: 公式ドキュメント)
=TEXTAFTER(検索対象のテキスト, 区切り文字, [区切り文字の検索開始番号], [大文字と小文字の区別], [テキスト末尾の包含], [エラーの返り値])
今回は検索対象のテキストにフォルダ及びファイル名を示す文字列、区切り文字に]
を指定しているため、]
より後ろのシート名が表示されます。
関数ごとの実際の動きは下記のとおりです。
=TEXTAFTER(CELL("filename",A1), "]")
=TEXTAFTER("C:\Users\User\フォルダ名\[ファイル名.xlsx]Sheet1", "]")
>> "Sheet1"
Excel 2019より前のバージョンでシート名を取得してセルに表示する
先に紹介したTEXTAFTER関数はExcel 2019で新たに追加された関数であるため、それより前のバージョンを使用している場合は、TEXTAFTER関数と同様の処理をRIGHT関数、SEARCH関数、LEN関数を使用して代用する必要があります。
=RIGHT(CELL("filename", A1), LEN(CELL("filename", A1))-SEARCH("]", CELL("filename", A1)))
TEXTAFTER関数を代用する方法については、TEXTAFTER/TEXTBEFORE関数が使えない場合の代用にて詳細に解説していますのでより詳しく知りたい方はそちらをご確認ください。
数式自体は少し複雑になっていますが、CELL関数でシート名を含むメタ情報を取得した後に、]
の後のシート名のみを取得する流れは完全に同じです。関数ごとの実際の動きは下記のとおりです。
=RIGHT(CELL("filename", A1), LEN(CELL("filename", A1))-SEARCH("]", CELL("filename", A1)))
=RIGHT("...[ファイル名.xlsx]Sheet1", LEN("...[ファイル名.xlsx]Sheet1")-SEARCH("]", "...[ファイル名.xlsx]Sheet1"))
=RIGHT("...[ファイル名.xlsx]Sheet1", 21-15)
=RIGHT("...[ファイル名.xlsx]Sheet1", 6)
>> "Sheet1"
おわりに
以上が、Excelでシート名を取得しセルに表示する方法になります。
ご質問やご不明点などがありましたらお気軽にコメントください。
ご精読いただきありがとうございました。
コメント