1

これは私の前の2つの質問に続きます:Excelは複数の基準に一致し、Excelは検索値がセル内にある範囲からセルを検索します。過剰投稿している場合はお詫びしますが、各質問は少し異なり、フォローアップの質問に煩わされる人は、答えを正解とマークできないと公平ではないように思われます。

すべての基準が満たされた場合にrange1から値を返すために、3列のデータをチェックするこの作業コードがあります。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(SEARCH(range4,J2)),0))

ただし、range4またはrange5で一致が見つかった場合に機能するには、SEARCHオプションが必要です。このサイトのJohnBus​​tosとBarryHoudiniのおかげで、MATCH関数内でORコマンドを使用する方法を知っています。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(((C2 = range4)+(D2 = range5))>0),0))

上記のコードは完全一致で機能しますが、C2とD2の値は単一のセルに含まれる数値のリストであり、range4とrange5は各セルの単一の年であるため、SEARCH関数を使用して単一の年が年のリスト。したがって、上記の2つの作業コードから判断すると、これでうまくいくと思いました。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(((SEARCH(range4,J2))+(SEARCH(range5,J2))>0)),0))

ただし、そうではなく、次のことも行いません。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(((SEARCH(range4,J2))+(SEARCH(range5,J2)))),0))

Ctrl + Shift + Enterキーを押すことを覚えていますが、常に#N/Aを返します。最初の例は、ORコマンドにする前に機能するため、値を返す必要があることはわかっています。

誰かがこれに光を当てることができることを願っています。前もって感謝します、

幸運をお祈りしています、

ジョー

4

2 に答える 2

1

SEARCHに変更する際に発生する問題はC2=range4、以前のバージョンの数式では、その結果がTRUEまたはFALSEであるのに対しSEARCH(range4,J2)、数値(J2の範囲4の値の位置)またはVALUEを返すことです。J2にない場合はエラー

...したがって、一方のSEARCHのみが値を検出し、もう一方のSEARCHが値を検出しない場合でも、値を検出しないものによって生成されたエラーが発生し、MATCHは一致を取得しないため、「OR」は機能しません。 ........ SEARCHがTRUEまたはFALSEを返すようにするために何かを追加する必要があることを修正するには、ISNUMBERを使用してこれを行うことができます。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(ISNUMBER(SEARCH(range4,J2))+ISNUMBER(SEARCH(range5,J2))>0),0))

引用する最初の式にも注意してください。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*(SEARCH(range4,J2)),0))

SEARCHが1以外の数値を返す可能性があるため、意図したとおりに機能しない可能性があります。そのため、そこにもISNUMBERが必要です。

=INDEX(range1,MATCH(1,(A2=range2)*(B2=range3)*ISNUMBER(SEARCH(range4,J2)),0))

于 2012-11-28T14:42:37.363 に答える
1

配列数式の場合は、「Ctrl + Shift+Enter」ではありません。それを試して、それが何かをするかどうかを確認してください。

于 2012-11-28T13:41:28.803 に答える