MATCH()関数を使用します。この目的のために
は、私たちは次のことを想定してみましょう:
:
- ルートが始まり
- が
- エンドは、式は次のようになり列C
ある列Bの列であります
=MATCH(1,IF(($A$1:$A$1000 = specified.route)*($B$1:$B$1000 <= specified.marker)*($C$1:$C$1000 >= specified.marker),1,0),0)
これはarですray公式。配列式であるため、編集モードを終了するときにCtrl-Shift-Enterを押して確定する必要があります。 Excelが正しく実行されると、数式の周りに{}
が自動的に配置され、配列数式が示されます。私たちは、それぞれの数学オペランド*
と+
に置き換えるよう
配列数式は、その計算でAnd
とOr
の使用は好きではありません。これは、条件がTRUE/FALSEを返し、それぞれ本質的に1/0であるブール値として格納されるために機能します。
配列計算は指数関数的であり、計算時間が遅くなるため、完全な列参照は使用しないでください。したがって、範囲参照は、データが考えられる最大の行数をカバーしながら、できるだけ小さくしておきます。
は今、私はあなたがINDEX()関数の中で全体を包んで、その値を返すために、別の列の値を見つけるために、行番号を使用することをここで想定しています。
ですから、基準が真である列Dの値が欲しいと仮定することができます:
=INDEX(D$1:$D$1000,MATCH(1,IF(($A$1:$A$1000 = specified.route)*($B$1:$B$1000 <= specified.marker)*($C$1:$C$1000 >= specified.marker),1,0),0))
これはまた、配列数式です。配列式であるため、編集モードを終了するときにCtrl-Shift-Enterを押して確定する必要があります。 Excelが正しく実行されると、数式の周りに{}
が自動的に配置され、配列数式が示されます。
これで、3つの基準のうちの1つ以上が常に偽であるため行番号にならないものとどう対処しますか。 IFERROR()関数で全体を囲みます。
=IFERROR(INDEX(D$1:$D$1000,MATCH(1,IF(($A$1:$A$1000 = specified.route)*($B$1:$B$1000 <= specified.marker)*($C$1:$C$1000 >= specified.marker),1,0),0)),"not found")
これもまた、上記の条件が適用される配列式です。
これは、一致するものがなければ"not found"
を返します。
ご回答いただきありがとうございます。非常に明確で有用でした。それも完璧に働いた! – WolVes
@WolVesあなたは大歓迎です。 –