エクセルでセルにファイル名やシート名を表示させるには?
エクセルで作業をしていると、ファイル名やシート名を表示させたいことがありますよね。特に、複数のシートやファイルを扱っているときに、いちいちシート名を入力するのは大変ですよね。。そんなお悩みに、この記事では、エクセルのセルに「ファイル名」や「シート名」を表示させる便利な方法を紹介します!
セルにシート名を表示させる方法
シート名をセルに表示させるには、CELL
関数を使う方法が簡単です。以下数式を使用することで、セルにシート名を表示させることができます!
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
エクセルに上記数式をコピペすればシート名が表示されますが、どうやってシート名を表示しているかを解説します!
■シート名を表示する流れ
・CELL関数を使い、ファイルパスを取得する
↓
・LEN関数でファイルパスの文字数を取得する
↓
・FIND関数で「]」の開始位置を取得し、ファイルパスの総文字数から引く(=シート名の文字数)
※ファイル名は「[]」記号で囲われるため、「]」以降の文字列がシート名になる
↓
・RIGHT関数で、右側からシート名の文字数分の文字列を取得する
文字だと分かりづらいので、実際にエクセルで表現してみました!今回はCドライブ直下「テスト」フォルダに「シート名ファイル名を表示」というエクセルファイルを作成し、そのシート名を取得しました。

参考までに、各関数がどういうものかを記載してみました!
★CELL関数
→セルに関する情報を返す関数。
=CELL(検査の種類,[対象範囲] '対象範囲は省略可
★LEN関数
→文字列の文字数を返す関数。
=LEN(文字列)
★FIND関数
→ 対象の文字列から、検索する文字列の開始位置を返す関数
=FIND(検索文字列,対象,[開始位置]) "開始位置は省略可
★RIGHT関数
→文字列の右端から指定した文字数の文字を返す関数
=RIGHT(文字列,[文字数])
セルにファイル名を表示させる方法
数式が少し長くなってしまいますが、MID関数を組み合わせることにより、ファイル名をセルに表示させることもできます!
=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,LEN(CELL("filename",A1))-FIND("[",CELL("filename",A1))-(LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))+1))
こちらもどうやってファイル名を表示しているかを解説します!
■ファイル名を表示する流れ
・CELL関数を使い、ファイルパスを取得する
↓
・FIND関数で「[」から+1の開始位置を取得する
↓
・ファイルパスの総文字数から「[」までの文字数と、「]」から+1の文字数を引く(=ファイル名の文字数)
↓
・MID関数で「[」から+1の開始位置より、ファイル名の文字数分の文字列を取得する
文字だとやっぱり分かりづらいですね。。こちらも同様に実際にエクセルで表現してみました!先ほどと同じファイルを使用し、ファイル名を取得しました。

★MID関数
→指定した文字列の位置から、指定した文字数の文字を返す関数。
=MID(文字列,開始位置,文字数)
活用例
・1ファイルで同じ書式のシートを複数拠点分作成しているケース(店舗や都道府県など)
→シートを追加したタイミングでシート名を変更すれば、セルに表示される文字列も変わるため、入力ミスを防げたり、手間を減らしたりすることができます!

ぜひ、これらの関数を活用して作業効率をアップさせてください!
<追記>1シートに全シート名を表示させる方法
上記ではシート名を取得する関数を紹介しましたが、以下ではエクセルVBAで全シート名を取得できるVBAコードを紹介します!シートの抜け漏れがないか確認できたり、ファイル整理に役立たせることが期待できます。
今回は、下のファイルにあるシート名を「シート名一覧」シートのA列に記載します。

Sub シート名を取得()
Dim ws As Worksheet
Dim i As Integer
Dim targetSheet As Worksheet
' シート名を表示するシートを設定(今回はシート名一覧シートに各シート名を取得します)
Set targetSheet = ThisWorkbook.Sheets("シート名一覧")
' 出力開始位置(セルA1より出力)
i = 1
' シート名をリスト表示
For Each ws In ThisWorkbook.Sheets
targetSheet.Cells(i, 1).Value = ws.Name
i = i + 1
Next ws
End Sub
こちらのVBAコードを実行すると、全シート名を取得することができました!

今回の内容が少しでも参考になれば幸いです。
ご覧いただき、ありがとうございました!
コメント