CELL関数でファイル名を取得して表示する方法【初心者のためのExcel入門】 | サービス | プロエンジニア

    CELL関数でファイル名を取得して表示する方法【初心者のためのExcel入門】

    • このページをはてなブックマークに追加

    公開日:2017年03月10日 最終更新日:2019年06月13日

    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セルを指定しても、結果は同じになります。

    column_image7378_01

    ▲目次へ戻る

    2.2 ファイルが保存されているフォルダの部分を切り出す

    この結果から、表示内容は次のような構成になっていることが分かります。


    保存先フォルダのパス[ファイル名]ワークシート名


    column_image7378_02

    ファイルが保存されているフォルダのパスについては「[」より左の部分を抜粋すればいいので、LEFT関数を使用します。

    その前にまずどこまで切り出せばいいのか、FIND関数を用いて「[」の位置を調べます。


    FIND("目印の文字列", 対象のセル)


    column_image7378_03

    このように「[」は13番目であることが分かったので、その1文字手前を指定(-1)してLEFT関数に組み入れます。


    LEFT(対象のセル, 文字数)


    column_image7378_04

    これで、ファイルが保存されているフォルダのパス部分が抜粋できました。

    ▲目次へ戻る

    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


    column_image7378_05

    ▲目次へ戻る

    3.CELL関数でワークシート名を取得する

    3.1 CELL関数でフルパスを取得する

    こちらも同じく、まずフルパスを取得します。


    CELL("filename",A1)


    ▲目次へ戻る

    3.2 ワークシート名の部分を切り出す

    この結果から、ワークシート名はファイル名の終わりを表す「]」より右側の部分を切り出せばいいので、RIGHT関数を使用します。

    ただしRIGHT関数は右から何文字切り出すかを指定しなければならないため、まずその文字数を調査する必要があります。文字数の調査には、LEN関数を使用します。


    LEN(対象のセル)


    column_image7378_06

    全体の長さから記号「]」までの長さを引くと、「]」以降の長さが求められるので、次のように表すことができます。


    RIGHT(対象のセル, LEN(対象のセル) - FIND("目印の文字列"))


    column_image7378_07

    このように、作業中のワークシート名を求めることができました。

    ▲目次へ戻る

    4.まとめ

    今回はCELL関数とMID関数やLEFT関数などの文字列切り出し関数を組み合わせることで、ファイル名などの表示を行いました。文字列の切り出しについての詳細は次の記事にも記載していますので、よろしければご覧下さい。

    <<エクセルで文字列や数字を抽出する方法【初心者のためのExcel入門】>>

    次回は、Excelの表に自動で更新されるカレンダーを作る方法について、ご紹介したいと思います。
    よければ合わせてご覧下さい。

    <<エクセルでカレンダーを作成する方法【初心者のためのExcel入門】(予)>>

    • このページをはてなブックマークに追加

    おすすめ記事

  • OCTPASS

    ピックアップ

    フリーランス

    【WindowsServer】社内ヘルプデスク★デジタルリスクシステムの企画・運用

    月額単価 :80万円〜100万円

    リスクに特化したビッグデータ解析をベースとした ソリューション提供している企業内で ネット炎上や...

    フリーランス

    【社内ヘルプデスク】アパレル企業向けデータ管理システムの開発サポート

    月額単価 :50万円〜

    アパレル企業向けデータ管理システムの開発の サポートをお任せします。 営業や顧客から上がる追加...

    フリーランス

    【Linux】インフラエンジニア★Webサイトのインフラ構築・運用サポート

    大規模Webサイトのインフラ構築・運用保守サポート および社内システムサポート、 Linuxサーバの構築...

    フリーランス

    【社内ヘルプデスク】恋愛・婚活支援サービス会社内でのヘルプデスク

    月額単価 :30万円〜40万円

    ・PC手配、初期設定、ヘルプデスク対応(チャットでの対応) ・メール、グループウェア、各種ASPなどの...

    フリーランス

    【PHP】システムエンジニア★自社スマートフォン決済サービス開発

    月額単価 :50万円〜80万円

    自社内にて、スマートフォン決済サービスの 追加機能開発をお任せします。 工程:要件定義~テスト...

    OCTPASS

    絞り込みメニュー

    絞り込みメニュー

    職種で探す

    SEACH_LISTjobcat257

    SEACH_LISTjobcat258

    SEACH_LISTjobcat259

    SEACH_LISTjobcat260

    SEACH_LISTjobcat261

    SEACH_LISTjobcat262

    SEACH_LISTjobcat263

    SEACH_LISTjobcat264

    SEACH_LISTjobcat265

    SEACH_LISTjobcat266

    SEACH_LISTjobcat267

    業種で探す

    雇用形態で探す

    勤務地で探す

    SEACH_LISTloccat391

    SEACH_LISTloccat394

    SEACH_LISTloccat403

    SEACH_LISTloccat413

    スキルで探す

    SEACH_LISTsklcat465

    SEACH_LISTsklcat466

    SEACH_LISTsklcat467

    SEACH_LISTsklcat468

    SEACH_LISTsklcat469

    SEACH_LISTsklcat470

    SEACH_LISTsklcat471

    こだわり条件で探す

    SEACH_LISTgoodcat337

    SEACH_LISTgoodcat338

    SEACH_LISTgoodcat339

    SEACH_LISTgoodcat340

    SEACH_LISTgoodcat341

    SEACH_LISTgoodcat342

    SEACH_LISTgoodcat343