1

私は、特定の値に一致する配列内の最後のセルのインデックスを見つけるという、十分に単純なタスクを実行しようとしています。

MATCH-INDEX 関数の組み合わせを使用していますが、結果が不正確で一貫性がありません。問題がわかりません。

この例では、値が 1 または -1 の配列を使用し、配列内の最後の 1 のインデックスを見つけようとしています。

インデックスマッチ結果写真

私の理解では (式の評価ツールを使用して確認します)、INDEX(A1:F1=1,0) は次の配列を返す必要があります。

{FALSE,TRUE,FALSE,TRUE,FALSE,FALSE}

MATCH(TRUE,...) の結果が 4 にならないのはなぜですか? MATCH は配列内で逆方向に動作し、最後の一致のインデックス (4 番目の位置の TRUE 値) を返す必要があります。

しかし、ここでは、このコードの結果は 6 です。

さらに悪いことに、同じコードを使用して INDEX に渡される配列を変更すると、結果に一貫性がなくなります。配列の値を 1 または -1 に変更すると、数式の結果が変わる場合と変わらない場合があり、その理由がわかりません。

以下では、3 番目の配列値のみを変更すると、式の結果が 4 から 6 に変更されます。

指標一致結果の写真 (2 番目のアレイ構成)

4

2 に答える 2

0

match は最初にしか見つからず、最後には見つからないようです。

しかし、私は可能な解決策を持っています。私は次の方法でそれを行います:

期待: あなたの値は H4 と H27 の間にあり、探している値は "39" です

1: 一致するすべてのセルの rownum を見つける

I4 --> I27: IF(H4 = 39; 行 (H4); -1)

2: I4 --> I27 で最大行番号を見つける

MAX(....)

3: 最初のセルの rownum を減算します (0 ベースのインデックス)

MAX(....) - 行(H4)

4: マトリックス関数に入れられた 1 つのセルだけでそれを取得するには (Ctrl Shift Enter で CURLY BRACKETS を作成します)

{=MAX(IF($H$4:$H$27=39;ROW(H4:H27);-1))-ROW(H4)}

奇妙に聞こえますが、機能します:)

于 2016-10-19T19:12:03.770 に答える