Excel でのシート名の取得。
Excel でワークシートの名前を得るには、
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
などとする。このとき
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
のように CELL(“filename”, A1)
の “A1
” の部分を省略するのはやめた方がいい。
Excel は再計算時に結果をキャッシュするようで、何か所か ”CELL(“filename”)
” があってもその全てに同じ値が割当られてしまう。
従って、複数のワークシートを持つワークブックの場合で、各ワークシートにおいてそれぞれのワークシート名を得ようとしても再計算時には全て同じ値を得てしまうことを意味する。
“ワークブック1.xlsx” において、“シートA”の A1 を =CELL(“filnemae”)
、”シートB” の A1 を =CELL(“filename”)
としたとき、再計算のタイミングにもよるが、
どちらも ¥¥path¥to¥[ワークブック1.xlsx]シート1
か、どちらも ¥¥path¥to¥[ワークブック1.xlsx]シート2
のようになってしまう
ということ。
ここで CELL(“filename”, A1)
のように対象範囲を同じシートのセルに設定すれば、それぞれのシートに対応した値を得ることができる。
ワークシート名に意味を持たせて、いろいろしようとするときには注意が必要。