ソース配列の列の値に基づいて配列を返す


1

特定の基準を満たす値のみの配列を取得しようとしています。

私は、これらの基準を満たすことが、各エントリごとにTRUE / FALSEの列にまとめられている配列を持っています。

INDEX MEETS_CRITERIA
1     TRUE
2     TRUE
3     FALSE
4     FALSE
5     FALSE
6     TRUE
7     TRUE
8     TRUE
9     FALSE
10    FALSE

以下のように、列 "MEETS_CRITERIA"に当てはまるすべての索引のリストを、ギャップなしで別のシートで入手したいです。

INDEX
1
2
6
7
8

私は以下の配列式でこれを試みています:

{=INDEX(ORIGINAL_ARRAY!$A$2:$A$10, MATCH("TRUE",ORIGINAL_ARRAY!$B$2:$B$10, 0))}

ただし、これは#N / Aを返します。

私の方式または私のアプローチの誤りは何ですか?


TRUEはブール値であるため、引用符は不要です。
クリフ

回答:


2

Clifによる観察と同様に、あなたの現在の公式はいずれにせよあなたが与えるリストではなく単一のリターンを提供するのに適しているでしょう。

そのためにはあなたが必要とするでしょう(あなたがExcel 2010またはそれ以降を持っていると仮定して):

=INDEX(ORIGINAL_ARRAY!$A:$A,AGGREGATE(15,6,ROW(ORIGINAL_ARRAY!$B$2:$B$10)/ORIGINAL_ARRAY!$B$2:$B$10,ROWS($1:1)))

コピーしました。

エラーのマスキングに関しては、あなたが与えた例があなたの実際の設定を代表していると仮定すると - ソースデータには12個程度の行しかないので - あなたはそうでなければ非効率的なIFERROR設定を許すことができます。

=IFERROR(INDEX(ORIGINAL_ARRAY!$A:$A,AGGREGATE(15,6,ROW(ORIGINAL_ARRAY!$B$2:$B$10)/ORIGINAL_ARRAY!$B$2:$B$10,ROWS($1:1))),"")

問題のデータ範囲が実際には非常に大きい場合は、シートのどこかに追加のセルを使用することをお勧めします。たとえば、D1では、期待リターン数を決定するために単一の式を使用します。

=COUNTIF(ORIGINAL_ARRAY!B2:B10,TRUE)

これは、メインの式自体で参照できます。

=IF(ROWS($1:1)>D$1,"",INDEX(ORIGINAL_ARRAY!$A:$A,AGGREGATE(15,6,ROW(ORIGINAL_ARRAY!$B$2:$B$10)/ORIGINAL_ARRAY!$B$2:$B$10,ROWS($1:1))))

ここに説明されている理由から(そして興味があるなら)、そしてIFERRORセットアップよりはるかに効率的になるでしょう。

リスト内の値を検索し、対応する複数の値すべてを返す

よろしく


完全に動作し、エラーチェックで上記を超えました。素晴らしい答えです。ご協力ありがとうございました。
分に分岐
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.