Excelを用いて作業していると、本文のセル中にファイル名を表示したい場合があるかと思います。今回はそんな要求を満たせる関数である「CELL関数」についてのご紹介と、それを応用したファイル名やワークシート名の取得方法について詳しくご紹介したいと思います。
■ 説明に使用したExcelのバージョン:Excel2013
1. セルの情報を得られるCELL関数とは?
1.1 CELL関数とは?
CELL関数とは、指定した範囲のセルの情報を調べて表示する関数です。セルの内容や行番号だけでなく、そのセルを含むファイルの情報を表示することも可能です。
1.2 CELL関数の使い方
CELL関数は、次のような書式で表すことができます。
CELL("検査の種類", 検査対象のセルの範囲)
検査対象のセルには「A1」などの単体のセルだけでなく、「A1:B2」のような範囲を指定することも可能です。
1.3 CELL関数で指定できる「検査の種類」は12種類
CELL関数で使用できる「検査の種類」は、全部で12種類あります。
検査の種類 | 表示される結果 |
---|---|
filename | 対象範囲を含むファイルのフルパス+ワークシート名を表示する。 (未保存の場合は空欄になる) |
address | 対象範囲の一番左上のセルの絶対アドレスを表示する。($A$1など) |
contents | 対象範囲の一番左上のセルの値(数式でなく結果)を表示する。 |
col | 対象範囲の一番左上のセルの列番号を表示する。 |
row | 対象範囲の一番左上のセルの行番号を表示する。 |
width | セル幅を表示する。(小数点以下切り捨て) |
format | 対象範囲の一番左上セルの表示形式に対応する文字列定数を表示する。 |
color |
負の数を自動的に色付けする書式設定の有無により、次の値を表示する。 設定されている場合:1 それ以外:0 |
parentheses |
正の値である、または全ての値を括弧で囲まれる書式設定の有無により、次の値を表示する。 設定されている場合:1 それ以外:0 |
prefix |
対象範囲のセルに設定されている文字位置により、次の値を表示する。 左詰めの文字列を含む:単一引用符 (') 右詰めの文字列を含む:二重引用符 (") 中央揃えの文字列を含む:キャレット (^) 両揃えの文字列を含む:円記号 (\) セルにそれ以外のデータが入力されている:空白文字列 ("") |
type |
対象範囲のセルに含まれるデータタイプにより、次の値を表示する。 文字列定数が入力されている:"l" (Label の頭文字) その他の値が入力されている:"v" (Value の頭文字) セルが空白:"b"(Blank の頭文字) |
protect |
セルのロックの有無により、次の値を表示する。 ロックされている場合:1 ロックされていない場合:0 |
ファイル名の取得は、上記のうちの「filename」を用いて実現することが可能です。
2. CELL関数でファイル名(ワークブック名)を取得する
2.1 CELL関数でフルパスを取得する
前項でご紹介した通り、ファイル名の取得には「filename」を使用します。書式は次の通りです。
CELL("filename",A1)
filenameの場合、どのセルでも同じファイルの中のセルであるため、検査対象の部分にはどのセルを指定しても同じ結果になります。そのためA1セルを指定しても、B2セルを指定しても、結果は同じになります。
2.2 ファイルが保存されているフォルダの部分を切り出す
この結果から、表示内容は次のような構成になっていることが分かります。
保存先フォルダのパス[ファイル名]ワークシート名
ファイルが保存されているフォルダのパスについては「[」より左の部分を抜粋すればいいので、LEFT関数を使用します。
その前にまずどこまで切り出せばいいのか、FIND関数を用いて「[」の位置を調べます。
FIND("目印の文字列", 対象のセル)
このように「[」は13番目であることが分かったので、その1文字手前を指定(-1)してLEFT関数に組み入れます。
LEFT(対象のセル, 文字数)
これで、ファイルが保存されているフォルダのパス部分が抜粋できました。
2.3 ファイル名(ブック名)の部分を切り出す
先ほどの情報から、ファイル名は中心の「[]」で囲まれた部分を抜粋すればいいことが分かります。よってこちらは、MID関数を使用します。
MID(対象のセル, スタートの文字位置, 文字数)
まず、スタートの位置は先ほどの「[」の1文字後を指定(+1)でOKです。
次に文字数ですが、スタートの「[」とエンドの「]」の位置をそれぞれ調べて、その差分をとることで求められます。
文字数 = エンド]の位置 - スタート[の位置 -1
これらを組み合わせると、次のような式が求められます。
MID(CELL("filename", A1)
, FIND("[", CELL("filename", A1)) +1
, FIND("]", CELL("filename", A1)) - FIND("[", CELL("filename", A1)) -1
3. CELL関数でワークシート名を取得する
3.1 CELL関数でフルパスを取得する
こちらも同じく、まずフルパスを取得します。
CELL("filename",A1)
3.2 ワークシート名の部分を切り出す
この結果から、ワークシート名はファイル名の終わりを表す「]」より右側の部分を切り出せばいいので、RIGHT関数を使用します。
ただしRIGHT関数は右から何文字切り出すかを指定しなければならないため、まずその文字数を調査する必要があります。文字数の調査には、LEN関数を使用します。
LEN(対象のセル)
全体の長さから記号「]」までの長さを引くと、「]」以降の長さが求められるので、次のように表すことができます。
RIGHT(対象のセル, LEN(対象のセル) - FIND("目印の文字列"))
このように、作業中のワークシート名を求めることができました。
4. まとめ
今回はCELL関数とMID関数やLEFT関数などの文字列切り出し関数を組み合わせることで、ファイル名などの表示を行いました。文字列の切り出しについての詳細は次の記事にも記載していますので、よろしければご覧下さい。
次回は、Excelの表に自動で更新されるカレンダーを作る方法について、ご紹介したいと思います。
よければ合わせてご覧下さい。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら