7

私は最近、干し草の山で針が見つからない場合 (つまり、一致するものが見つからない場合)、Excel の検索関数が #VALUE エラーを返すことを知りました。この動作についていくつか質問があります。

  1. 検索として機能するが、一致が見つからない場合に実際の値 (-1 など) を返す別の Excel 関数はありますか?
  2. 関数がその動作をするよく知られた理由はありますか? つまり、一般的なプログラミングとソフトウェア設計について言えば、関数が返されない場合に戻り値 (-1、0、"" など) よりも例外をスローすることを好む既知のパターン (または方法論、または設計哲学) はありますか? 「有効な」値?
4

1 に答える 1

14

Find 関数は大文字と小文字を区別して一致を検索し、次のように IsNumber でテストできます。

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),"No exact match")

同じことを行う Search と呼ばれる非常によく似た機能がありますが、大文字と小文字は区別されません。また、一致が見つからない場合はエラーを返します。

したがって、何かを探していて、一致するものがなく、大文字と小文字を区別する心配がない場合に -1 を返したい場合は、次のようなものがうまくいくはずです。

=IF(COUNTIF(A1,"*abc*")=0,-1,SEARCH("abc",A1))

大文字と小文字を区別する検索では、次のようになります。

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),-1)

Excel 2007 以降を使用している場合は、IFERROR を使用してエラー チェックをスキップできます。

=IFERROR(SEARCH("abc",A1),-1)
=IFERROR(FIND("abc",A1),-1)
于 2013-08-09T17:15:36.807 に答える