ISERROR, IFERROR で補足不可能な #ERROR!
2025-03-12 11:00

CELF では FIND関数の3番目の引数(開始位置)が大きすぎると、
具体的には 2番目の引数(対象)の文字列長+2以上になると
#VALUE! ではなく #ERROR! になります
Excelではどちらも #VALUE! となるので、内部処理が異なると言えます
=FIND("A","BC",3) → #VALUE!
=FIND("A","BC",4) → #ERROR!(Excelでは #VALUE!)
そして、後者 #ERROR! になるケースでは
ISERROR / IFERROR でキャッチできなくなっているようです
=ISERROR(FIND("A","BC",3)) → true
=ISERROR(FIND("A","BC",4)) → #ERROR!
=IFERROR(FIND("A","BC",3),"*") → *
=IFERROR(FIND("A","BC",4),"*") → #ERROR!
FINDの結果がExcelの場合と異なるのも問題ですが
#ERROR! 値を ISERRORでキャッチできないのも問題じゃないかと思います
何らかの理由があってのことなら、別ですが
偶然気づいたので共有まで
実運用では #ERROR! は回避するようにいたします
回答を投稿するにはログインが必要です。
情報共有ありがとうございます!
CELFのFIND関数の挙動について、とても参考になりました!
開始位置が文字列長+2以上になると #ERROR! になるのは、Excelとは違うんですね…
しかも、ISERROR/IFERRORでキャッチできないとは… これは確かに問題ですね…
偶然とはいえ、検証お疲れ様でした!
おかげで、思わぬエラーを回避できそうです。
CELFのFIND関数の挙動について、とても参考になりました!
開始位置が文字列長+2以上になると #ERROR! になるのは、Excelとは違うんですね…
しかも、ISERROR/IFERRORでキャッチできないとは… これは確かに問題ですね…
偶然とはいえ、検証お疲れ様でした!
おかげで、思わぬエラーを回避できそうです。