エクセルで、シート名・ファイル名をセルに表示してみよう!

Excel

エクセルでセルにファイル名やシート名を表示させるには?

 エクセルで作業をしていると、ファイル名やシート名を表示させたいことがありますよね。特に、複数のシートやファイルを扱っているときに、いちいちシート名を入力するのは大変ですよね。。そんなお悩みに、この記事では、エクセルのセルに「ファイル名」や「シート名」を表示させる便利な方法を紹介します!

セルにシート名を表示させる方法

 シート名をセルに表示させるには、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コードを実行すると、全シート名を取得することができました!

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

コメント

タイトルとURLをコピーしました