エクセルのシート名を取得する方法について。
請求書や見積書など、エクセルのシートをコピーして
通し番号で管理するケースは良くあると思う。
シート名を変えて、そのシート名と同じ文言に合わせて
セルに入力するのでは効率が悪いし
何より入力忘れというミスを招いてしまうので
自動的にシート名を取得して表示する方法があると便利だ。
以前から使っている関数であるが、
メモ書きも兼ねて投稿をする。
答えから記載すると下記のような式になる。
=MID(CELL(“filename”,$A$1),FIND(“]”,CELL(“filename”,$A$1))+1,31)
順番に仕組みを解説すると、
まずはCELL関数のfilenameについて。
=CELL(“filename”)
と入力をするとそのファイル名のフルパスとシート名が表示される。
※後日追記
カンマ区切りでどこかのセルを指定しないとエラーが出る事が分かったので
=CELL(“filename”,$A$1) と修正します。
実際に入力するとこんな感じ。
※エクセルを保存する前だと保存場所が取得できずエラーになるので注意。
このままではフルパスの部分が不要なので
前のほうを削除をする必要がある。
C:\Users\ユーザー名\Desktop\[Book1.xlsx]シート名テスト
シート名の直前にある文字列、角括弧の閉じ ] に注目をして、
FIND関数を使って ] の位置を調べる。
=FIND(“]”,CELL(“filename”))
すると「35」という値が返ってくる。
これは ] が文字列の先頭から35番目の文字だという事を表している。
つぎにMID関数を使って35番目以降の文字を取り出す。
取り出す文字数は100でも1000でもいいが、
エクセルのシート名は31文字以上にできないので
31を最大値として取り出す事とする。
=MID(CELL(“filename”),FIND(“]”,CELL(“filename”)),31)
すると結果はこうなる。
先頭から35番目の文字から後ろの31文字を取り出したかたちだが、
これではあたまに ] が入ってしまい邪魔である。
なのでFIND関数で取り出した値に1を足して、
先頭から36文字目とする。
=MID(CELL(“filename”),FIND(“]”,CELL(“filename”))+1,31)
※後日修正
=MID(CELL(“filename”,$A$1),FIND(“]”,CELL(“filename”,$A$1))+1,31)
これでシート名を取り出す事ができる。