ファイル名を表示する数式を入力する
ファイル名をセルに表示させることができます。
A1セルに、
=MID(CELL("filename",A1),
FIND("[",CELL("filename",A1))+1,
FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)
を入力します。
これでファイル名が表示されます。
ファイル名を表示するしくみ
まず上記で使われているCELL関数を詳しく解説します。CELL関数でファイルのパスとシート名を取得します。CELL関数は、
=CELL(検査の種類,参照) で表されます。
「検査の種類」には様々なものがあります。
検査の種類 | 戻り値 |
“address” | 対象範囲の左上隅にあるセルの参照を表す文字列 |
“col” | 対象範囲の左上隅にあるセルの列番号 |
“color” | 負の数を色で表す書式がセルに設定されている場合は 1 それ以外の場合は 0 |
“contents” | 対象範囲の左上隅にあるセルの値 (数式ではない) |
“filename” | 対象範囲を含むファイルのフル パス名 (文字列) 対象範囲を含むワークシートが保存されていなかった場合は、空白文字列 (“”)。 |
“format” | セルの表示形式に対応する文字列定数。 |
“parentheses” | 正の値またはすべての値をかっこで囲む書式がセルに設定されている場合は 1 それ以外の場合は 0 |
“prefix” | セルの “文字位置” に対応する文字列定数 |
“protect” | セルがロックされていない場合は 0 ロックされている場合は 1。 |
“row” | 対象範囲の左上隅にあるセルの行番号 |
“type” | セルに含まれるデータのタイプに対応する文字列定数。 セルが空白の場合は “b” セルに文字列定数が入力されている場合は “l” その他の値が入力されている場合は “v” |
“width” | 小数点以下を切り捨てた整数のセル幅。 セル幅の単位は、既定のフォント サイズの 1 文字の幅と等しくなる |
今回はファイルを読み取る”filename”を使用します。この場合「参照」はどのセルでも構いません。
A2セルに次の数式を入力してみます。
=CELL("filename",A1)
すると、A2セルには
C:\Users\exceltaro\Desktop\[サンプル.xlsx]テスト
と表示されます。これがファイルのパスです。
MID関数とFIND関数を使ってファイル名だけを取り出す
上のファイルのパスから、ファイル名だけを取り出すために、MID関数、FIND関数を使います。
まず、FIND関数を使い、
FIND("[",CELL("filename",A1))
によって、C:\Users\exceltaro\Desktop\[サンプル.xlsx]テスト の”[ “が出てくるところ、つまり C:\Users\exceltaro\Desktop\[ の文字数を算出します。
この結果は、25 です。
次に同じくFIND関数を使い、
FIND("]",CELL("filename",A1))
によって、ファイルのパスのうち、”]”が出てくるところ、つまりシート名の直前までの C:\Users\exceltaro\Desktop\[サンプル.xlsx] の文字数を算出します。
この結果は、35 です。
これにより、
(”]”までの文字数)-(”[“までの文字数)
FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))
=35ー25=10 となります。
ここから1を引いた数が、ファイル名の文字数です。
FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1
10-1=9
次にMID関数で、C:\Users\exceltaro\Desktop\[サンプル.xlsx]テスト のファイル名を抽出します。
MID関数は、
=MID(文字列,開始位置,文字数) で表されます。
“[“の次の文字からファイル名が始まるので、開始位置は
FIND(“[“,CELL(“filename”,A1))+1
になります。 これと、上で求めたファイル名の文字数
FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1
を使って、一つの数式で表したものが
=MID(CELL("filename",A1),
FIND("[",CELL("filename",A1))+1,
FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)
となります。
これでファイル名が表示されます。
関連記事