Excel関数のドキュメントと一般的なMSDN検索を検索しましたが、VBAなしでシート名を返す方法を見つけることができませんでした。
VBAに頼ることなくExcelの数式でシート名を取得する方法はありますか?
Excelではあまり良くありませんが、私はこれらを見つけました ここ
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
およびA1
は、シート内のエラーのないセルです。
シートの完全なパスと名前については、
=CELL("filename",A1)
最近のバージョンのExcelでは、式の構文は次のとおりです。
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
これが合理的に短いもので、いくつかの利点があります:
REPT
関数を使用して、逆ルックアップを行います(他のほとんどの答えは間違った方向に進みます)。A1
_と比較してerrors
の可能性がかなり高いため、_$FZZ$999999
_は不適切な選択のようです。?
_は、ファイルパスに含めないでください。=SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999), "]",REPT("?", 999)), 999),"?","")
以下はシート名を分離します:
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
他の回答で示されている数式は、ファイルパスに文字]が含まれている場合をサポートしていません。
以下の式はより複雑ですが、そのような場合を適切に処理できます。
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1),FIND("?",SUBSTITUTE(CELL("filename",A1),"\","?",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\","")))))+1,LEN(CELL("filename",A1)))
私はすでにモジュールを開いていたので、カスタム関数を作成しました:
Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name
End Function
ファイル名に角かっこ ']'が含まれていたため、角かっこの最後の出現を見つけるには、次のように上記の式を変更する必要がありました。これが、ファイル名/パスの0、1以上の角括弧で機能することを確認しました。
=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
ワークブックを最初に保存することに関する上記の以前のコメントも重要です。そうしないと、#Value!結果。