ワークシート名を取得する計算式・関数

エクセルにおいて【ワークシート名を取得する】計算式・関数は以下の通りです。
直接取得する関数はないため、複数の関数を組み合わせています。

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

上記をそのままコピーしてお使いください。
※ただし「一度も保存していないファイル」に対しては使用できません。何らかのファイル名を与えてから利用してください。

上記の数式に関する説明が必要な方は下記をお読みください。

「CELL(“filename”)」について

下記のサンプルは「C:\sample」という場所にある「new_book007.xlsx」というファイル名のエクセルブックだとします。

エクセルでは「CELL関数」を使い引数に文字列「filename」を設定すると、保存先のフォルダー名とファイル名、シート名が表示されます。ファイル名は[]で囲まれます。

サンプルではセルB2に

=CELL("filename")

を作成しました。
その結果

C:\sample\[new_book007.xlsx]Sheet1

という値が返っています。

数式に名前を定義する

さてこの計算式「CELL(“filename”)」は何度か使うので「パス」という名前で登録しておきます。
「数式」タブの「名前の定義」から登録できます。

「名前:パス」「参照範囲:=CELL(“filename”)」としましょう。

LEN関数で文字数を調べる

今回の目標は
「パス」の中から「]」の右の文字列を取得する
となります。

「右の文字列を取得する」という作業は「RIGHT関数」を使います。
その際「何文字を取得するか」を指定しなければなりません。
全体の文字数-「]」の左からの位置
を取得することになります。

まずはLEN関数で「パス」の文字数を調べてみます。

=LEN(パス)

で「何文字か」が返ります。
サンプルではセルB3に表示してみました。

FIND関数で「]」の位置を調べる

次にファイル名を囲んでいる右側の「]」の位置を調べます。
「FIND関数」を使うと特定の文字の左からの位置を調べることができます。

=FIND("]",パス)

とすれば「パス」(対象)内にある「]」(検索文字列)の左からの位置がわかります。
FIND関数は
=FIND(検索文字列,対象)
の書式で使用することができます。
サンプルではセルB4に表示してみました。

RIGHT関数で「]」の右以降を取得する

「パス」(文字列)の右側から「全体の文字数(34)-「]」の位置(28)」(文字数)を取り出せばシート名が残ります。
「RIGHT関数」を使います。

=RIGHT(パス,B3-B4)

とすれば取得できます。
RIGHT関数は
=RIGHT(文字列,文字数)
の書式で使用することができます。
サンプルではセルB5に表示してみました。

さらに

B3=LEN(パス)
B4=FIND("]",パス)

としましたので置き換えれば

=RIGHT(パス,LEN(パス)-FIND("]",パス))

となります。
さらに

パス=CELL("filename")

であるため置き換えれば最初にご紹介した

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

がワークシート名を取得する計算式となるのです。

コメント