EXCELのセル内にファイル名を埋め込む

拡張子有り
=MID(CELL("filename"),FIND("?",SUBSTITUTE(CELL("filename"),"[","?",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"[",""))))+1,FIND("?",SUBSTITUTE(CELL("filename"),"]","?",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]",""))))-FIND("?",SUBSTITUTE(CELL("filename"),"[","?",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"[",""))))-1)

拡張子無し
=MID(CELL("filename"),FIND("?",SUBSTITUTE(CELL("filename"),"[","?",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"[",""))))+1,FIND("?",SUBSTITUTE(CELL("filename"),".","?",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),".",""))))-FIND("?",SUBSTITUTE(CELL("filename"),"[","?",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"[",""))))-1)


もっと短くできるかもしれませんが、とりあえず可能です。
ファイル名に ( とか ) が含まれているとダメかも。たぶんダメ。
ファイル名や保存ディレクトリに [ ] . とかが含まれていてもOKになるようにはした。たぶんOK。


ファイル名の取得がフルパスでしか取得できないから加工しないといけない。
で、エクセルの文字操作系関数を今回、まじめに見てみたが激しく貧弱だ。
文字列の検索関数で後方一致オプションとかほしい。
別件で思った事としては、セル範囲を引数で指定して
文字列を連結したりとかしたいがそういう関数は無いみたい。
これは寂しい。