残業を減らす!Officeテクニック

Excelの表でシート名を利用するのに毎度手動でコピペする修行は不要! 関数で取得する方法

ワークシート名を取得するには「CELL関数」を利用する

 操作中のワークシート名を自動的にセルへ入力できないの? と思う瞬間がありませんか? 例えば、同じフォーマットの表を使い回したい時。元のワークシートをコピーして「(シート名) (2)」「(シート名) (3)」…、と自動的に命名されたシート見出しを修正するはずです。

元のワークシートをコピーした例。シート見出しは「(シート名) (2)」「(シート名) (3)」…、と自動的に命名される

 そして、修正したワークシート名をそのままコピーしてセルに貼り付けていませんか? ダブルクリックしてシート名を全選択、[Ctrl]+[C]→[Ctrl]+[V]の流れ、地道な作業ですよね。10シート以上なら修行のようです。関数式を仕込んで回避しましょう。

 CELL関数、MID関数、FIND関数の3つを組み合わせ方が多少複雑ですが、一回入力すれば使い回せます。ひとつずつ見ていきましょう。

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

 CELL(セル)関数は、マイナーだと思いますが、ワークシート名の取得には定番の関数です。構文は以下の通り。ワークシート名を取得する場合、引数[検査の種類]は「"filename"」と覚えてください。[参照]はワークシート内のいずれのセル番地でも構いません。「A1」でOKです。

CELL関数の構文。ワークシート名を取得するなら、引数[検査の種類]は「"filename"」、[参照]は「A1」で構わない

 つまり、セルA1に「=CELL("filename",A1)」と入力すれば、パスを含むファイル名とワークシート名を取得できます。ただし、どこでも構わないのでファイルは保存しておいてください。新規作成した未保存のファイルでは結果が空白になります。

セルA1に「=CELL("filename",A1)」と入力した。パスとファイル名を含んだワークシート名が表示される

 CELL関数の結果は、ファイルのパス、角括弧([])でくくられたファイル名、ワークシート名の順に表示されていることがわかります。この結果からワークシート名を取り出していきましょう。

CELL関数の結果は、ファイルのパス、角括弧([])でくくられたファイル名、ワークシート名の順に表示される

MID関数とFIND関数でパス名を処理する

 最終的に欲しいのはワークシート名(ここでは「1-4月実績」)なので、パスとファイル名が邪魔ですよね。MID関数とFIND関数で処理します。ここで構文を復習しておきましょう。

MID関数の構文。[文字列]から[開始位置]で指定した位置から[文字数]分取り出す
FIND関数の構文。[検索文字列]を[対象]から検索する。検索する位置は[開始位置]で指定する

 まずはMID関数の動作を確認してみます。CELL関数の結果は「C:UsersmadoDesktop[1-4月実績.xlsx]1-4月実績」でした。ファイル名とワークシート名の区切り「]」(35文字目)より後ろが取り出せればいいわけです。

 任意のセル(ここではセルA8)に「=MID(A1,36,99)」と入力します。「]」以降を取り出したいので、引数[開始位置]に「36」、引数[文字数]には何文字あってもいいように「99」と指定しました。なお、ワークシート名は31文字までに制限されているので、引数[文字数]は「31」としても構いません。

セルA8に「=MID(A1,36,99)」と入力した。ワークシート名を取り出せた

 残る課題はファイル名とワークシート名の長さです。作業環境によってパスとファイル名は異なるため、先ほどのように「36」とは指定できませんよね。

 そこで、FIND関数を利用します。FIND関数は、引数[検索文字列]に指定した文字列を[対象]から検索してその開始位置を文字数で返しますます。CELL関数の結果にはファイル名の一部として「]」が含まれるので「]」の位置がわかれば解決です。任意のセル(ここではセルA9)に「=FIND("]",A1)」と入力します。

セルA8に「=FIND("]",A1)」と入力した。「35」と表示された

 FIND関数の結果「35」が表示されました。この例では「]」が35文字目ということです。「]」を検索した結果なので、この数式は汎用的に利用できそうです。「+1」して、MID関数の引数[開始位置]に使えますよね。MID関数とFIND関数の数式を組み合わせると、以下のようになります。組み合わせた数式の結果も正しいことがわかります。

MID関数の数式中の「36」をFIND関数の数式に置き換えた例。「FIND("]",A1)+1」で「]」より1文字後ろを、MID関数の引数[開始位置]に指定したことになる
セルA10に「=MID(A1,FIND("]",A1)+1,99)」と入力した。ワークシート名を取り出せた

CELL関数を組み合わせる

 ここまで来ればあと一歩です。最初に入力したCELL関数を組み込みましょう。MID関数とFIND関数を組み合わせた数式「=MID(A1,FIND("]",A1)+1,99)」の「A1」(セルA1)にはCELL関数が入力されているので、「A1」を「=CELL("filename",A1)」に置き換えれば完成です。

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99)
MID関数とFIND関数を組み合わせた数式「=MID(A1,FIND("]",A1)+1,99)」の「A1」を「=CELL("filename",A1)」に置き換える

 ワークシート名を変更して動作を確認してみましょう。ワークシート名とセルA1が連動するはずです。

セルA1には「=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99)」と入力してある。ワークシート名を変更する
セルA1の結果が変更された
コピーしたワークシートでも、ワークシート名とセルA1が連動している
ワークシート名を修正すれば、セルA1の結果も切り替わる