1

TRUEFALSEステートメントに基づいて範囲のサブセットを識別しようとしています。以下のチャートに例を示します。

FALSE   FALSE   1.21147
TRUE    FALSE   1.20984
FALSE   FALSE   1.21083
FALSE   FALSE   1.210315
FALSE   TRUE    1.21151
FALSE   FALSE   1.21335
FALSE   FALSE   1.213515
FALSE   FALSE   1.212435
TRUE    FALSE   1.212125
FALSE   FALSE   1.21226

このシナリオでは、交互のTRUEステートメントに基づいてサブセットを識別したいと思います。左側の列では、最初のTRUEステートメントがサブセットの開始をトリガーし、2番目の列のTRUEステートメントがサブセットの終了をトリガーします。次に、単純なmax関数を使用して、3番目の列のMAXを識別します。IFステートメントを使用して最初のTRUEステートメントが正しいかどうかを判断しますが、2番目の列のTRUEステートメントに基づいて範囲のサブセットを識別する方法を理解できません。また、ステートメントが下から上に向かって機能する可能性がある場合、これが上から下に向かって機能するかどうかも知りたいです。どんな助けでも大歓迎です。

4

2 に答える 2

1

パート1MATCHは、OFFSETとの組み合わせを使用して実行できます。MAX

この例では、データがセルから始まると仮定しましたA2

わかりやすくするために、セルでいくつかの中間結果を使用しますE1:E4。単一の数式が必要な場合は、中間の数式を最終的な数式にマージするだけです。

セルE2=TRUE列の最初の位置A

=MATCH(TRUE,A2:A11,0)

セルE3=TRUE列の最初の位置B

=MATCH(TRUE,B2:B11,0)

C結果の数式、で見つかった行の間の列の 最大値E2E3(両端を含む)

=MAX(OFFSET($C$1,E2,0,E3-E2+1,1))

パート2はもっと注意が必要です。範囲で値を検索することはできないと思います。ただし、データを見ると、 2番目 のデータを検索しても問題ない場合がありますTRUEか?これで問題がない場合:

セルE4=TRUE列の2番目の位置A

=MATCH(TRUE,OFFSET(A2:A11,E2,0),0)

または、これは、列の最後取得する配列数式(BarryによってInsipred)として入力されますTRUE

=MATCH(2, 1/(A2:A11=TRUE),1)

C結果の数式、で見つかった行の間の列の最大値E3E4(両端を含む)

=MAX(OFFSET($C$1,E3,0,E4+E2-E3+1,1))
于 2012-12-10T04:56:49.217 に答える
0

テーブルを下から上にトラバースすることについてのあなたの部分は私を混乱させました、そしてまたあなたが最後から2番目の行が閉じられていない新しいサブセットの始まりであるように見えるのであなたが複数のサブセットを持つことができるかどうかわかりません。とにかく、これが役立つことを願っています。マクロを使用したくないと思いますが、その場合は簡単です。できることは、データセットの上部にFALSE、FALSE、0、0を含む行を埋め込み、この数式をセットの最初の行から始まる4番目の列に追加することです。

=IF(AND(NOT(A2),NOT(B2),OR(D1=0,AND(NOT(A1),B1))),0,C1)

これは、最初の行が行2であり、行1がパディングに使用されていることを前提としています。A、B、Cはこの例の3つの列であり、Dは3番目の列の値をサブセット内にある場合は出力し、そうでない場合はゼロを出力するため、max()などを簡単に計算できます。行う。私はこのように見えます:

ここに画像の説明を入力してください

于 2012-12-10T03:29:13.913 に答える