Q&A

回答の並べ替え:
投稿新規に質問を投稿する

ISERROR, IFERROR で補足不可能な #ERROR!

fujiima fujiima

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! は回避するようにいたします

Tanaka Tanaka
情報共有ありがとうございます!
CELFのFIND関数の挙動について、とても参考になりました!

開始位置が文字列長+2以上になると #ERROR! になるのは、Excelとは違うんですね…
しかも、ISERROR/IFERRORでキャッチできないとは… これは確かに問題ですね…

偶然とはいえ、検証お疲れ様でした!
おかげで、思わぬエラーを回避できそうです。