Excel(エクセル)のシート名を取得して、作成した表のタイトルにしたいというニーズはめずらしくないでしょう。今回は、CELL関数を利用してExcelファイルのフルパス情報を取得し、その中からシート名を抽出する方法について確認していきます。
本連載では、「よく使うけど忘れやすいMicrosoft Officeの操作」をキーワードに、Officeアプリケーションの使い方を解説していきます。記事の制作には、執筆時点で最新の状態にアップデートしたMicrosoft Office 2016を使用しています
セルの文字列とシート名を連動させたい
Excelで作成した表のタイトルにシート名をそのまま使いたいケースもあるはずです。そんなときは、セルを選択してシート名と同じ文字列を入力するのが一般的ですが、このやり方ではシート名を変更したときに、セルの文字列も手動で書き変える必要があります(図1)。
そこで今回は、CELL関数を使ってシート名までを含んだExcelファイルのフルパスを取得し、RIGHT関数、LEN関数、FIND関数を組み合わせてシート名を抽出してみます。
ファイル名情報はCELL関数の「filename」で求める
まずはCELL関数を使って、ファイルの情報を取得する方法を確認します。ファイル情報を表示させたいセル(画面の例ではA2)を選択して、数式バーに「=CELL("filename",A1)」と入力します(図2)。[Enter]キーで確定させると、A2セルにファイルの情報がフルパスで表示されます。「保存場所のバス[ファイル名]シート名」という表記になります(図3)。
ちなみに、数式の「A1」部分は抽出するファイルとシート(つまり対象範囲)を指定するためのもので、シート内のセルであればどれを指定してもかまいません。試しに「=CELL("filename",B1)」としてみても、同じ結果となります(図4)。
シート名だけを表示する数式を作成
CELL関数の使い方を確認したところで、いったん数式をクリアします。ここからは、CELL関数で取得したファイル名情報からシート名だけを表示させる数式を作成していきましょう。
A2セルを選択したら、数式バーに「=RIGHT(」と入力します(図5)。続けて「CELL("filename",A1),」と入力(図6)。さらに「LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))」と入力して、「=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))」という数式を完成させます(図7)(図8)。
この数式を読み解くと、RIGHT関数は指定した文字列の右端から指定された数の文字を抽出する関数で「=RIGHT(文字列,文字数)」という書式で記述します。LEN関数は指定した文字列の文字数、FIND関数は指定した文字列の場所を左端から数えた位置を返します。
少し複雑ですが、今回の数式では「=RIGHT(抽出したファイル名情報の文字列,ファイル名情報の文字数-「]」の位置までの文字数)」となります。「]」はCELL関数で取得したファイル名の後に付くので、そこから右にあるシート名部分が抽出できる仕組みです。[Enter]キーで確定させるとA2セルにシート名が表示されるはずです(図9)。
この数式はCELL関数で取得したファイル名が「[]」で囲まれることを利用したものです。ファイル名に「]」が入っている場合はシート名だけを抜き出せないので注意しましょう。
シート名を変更するとセルにも反映
関数の組み合わせてシート名を取得したA2セルの文字列は、シート名と連動しています。シートのタブを右クリックして「名前の変更」を選択(図10)。シートの名前を変更して(図11)、[Enter]キーで確定させましょう。A2セルの文字列も変更したシート名になります(図12)。