エクセルのCELL関数の使い方や、ファイルパスを取得する方法をご紹介します。フルパスからシート名だけを抽出する方法や、ブック名だけを抽出する方法についても解説しているので、ぜひ参考にしてみてください。
CELL関数でファイルパスを取得する方法
CELL関数の基本的な使い方と、検査の種類「filename」について解説します。なおGoogleスプレッドシートの場合、検査の種類にfilenameはありません。
CELL関数の使い方
CELL関数は指定した「対象範囲」について、「検査の種類」で要求した情報を返します。
検査の種類とは、返すセル情報の種類を指定するテキスト値です。例えば検査の種類に”filename”を指定すると、CELL関数は対象範囲を含むファイルのフルパスを返します。
※すべての「検査の種類」は、引用符 (” “) で囲ってください。
CELL関数の構成要素:(検査の種類, [対象範囲])
対象範囲を含むシートが未保存の場合は、空白文字列(“”)を返します。
CELL関数の対象範囲とは?
2番目の要素「対象範囲」は省略可能ですが、基本的には任意のセルを指定してください。
何故ならCELL関数は対象範囲を省略した場合に限り、アクティブセルの情報を返すからです。
例えば「Book1」でfilenameを要求したとしても、「Book2」を編集するとファイルパスがBook2のものに置き換わってしまいます。
セルの行番号を返す検査値「”row”」などの場合も同様です。対象範囲を省略した場合に限り、セルを編集する毎にCELL関数が返す値も置き換わります。
検査の種類がfilenameの場合、対象範囲はCELL関数を入力したセルにしておくと良いでしょう。
なぜなら「対象範囲」に別のセルを指定した場合、該当の行や列を削除すると参照元がなくなり「#REF!エラー」になってしまうからです。
#REF!エラー:数式が無効なセルを参照していることを意味します。
CELL関数でシート名・ブック名を取得する方法
CELL関数で取得したフルパスからシート名だけを抽出する方法と、ブック名だけを抽出する方法を解説します。必要に応じてセル値を変更すれば、コピーしてそのまま使用可能です。
CELL関数でシート名を抽出する方法
ファイルパスからシート名を取得するには、まずシート名の文字数を取得します。シート名の文字数を取得するための手順は以下の通りです。
- LEN関数でファイルパス全体の文字数を取得する
- FIND関数で閉じ括弧( ] )を検索し、シート名までの文字数を取得する
- 全体の文字数から、シート名までの文字数を減算する。
LEN(文字列):指定した文字列の文字数を返します。
FIND(検索文字列, 対象, [開始位置]):検索文字列が最初に現れる位置を返します。
最後に、RIGHT関数でファイルパスの右側から「シート名の文字数」分の文字を取得します。
全体の数式としては、RIGHT(A1
,LEN(A1
)-FIND(“]”,A1
))になります。
RIGHT(文字列,[文字数]):文字列の右側から、指定した文字数の文字を返します。
CELL関数でブック名を抽出する方法
シート名の取得と同じ方法で、ファイルパスからブック名を取得することもできます。ブック名を取得するための手順は以下の通りです。
- FIND関数で閉じ括弧( ] )を検索し、シート名までの文字数を取得する
- FIND関数で開き括弧( [ )を検索し、1を加算することでブック名までの文字数を取得する
- シート名までの文字数から、ブック名までの文字数を減算する
手順3:ブック名までの文字数は、本来FIND関数で円記号(¥)を検索します。しかし(¥)はファイルパスに複数回出現するため、閉じ括弧に1を加算して代用しています。
最後に、MID関数で「ブック名までの文字数」から、「ブック名の文字数」分の文字を取得します。
全体の数式としては、
=MID(A1
,FIND(“[“,A1
)+1,FIND(“]”,A1
)-(FIND(“[“,A1
)+1))になります。
MID(文字列, 開始位置, 文字数):開始位置から、指定した文字数の文字を返します。