配列を実行し、N 個の一致する結果を返す Excel 数式を作成したいと考えています。つまり、この数式を最初にセル A1 (たとえば) に配置すると、最初に一致する結果が返されます。これをセル A2、A3 などにドラッグすると、それぞれ 2 番目と 3 番目の一致する結果が返されます。現在、次のことを行う数式があります。
INDEX(Sheet2!$B$2:$B$10081,AGGREGATE(15,3,(Sheet2!$AA$2:$AA$10081="TRUE")/(Sheet2!$AA$2:$AA$10081="TRUE")*(ROW(Sheet2!$AA$2:$AA$10081)-ROW(Sheet2!$AA$1)),ROWS($R$73:R73))))
ただし、私は OR 関数を使用しようとしているので、セル範囲が TRUE か FALSE かをチェックするだけでなく (これは現在ヘルパー セル/列で行われています)、範囲が次のいずれかの条件に一致するかどうかをチェックできるようにしたいと考えています。
- 値が999999を超えるセル
- 値が0のセル
- 値が負のセル(<0)
私の試みは以下の通りです:
INDEX(Sheet2!$A$2:$A$10081,AGGREGATE(15,3,(OR(Sheet2!$B$2:$B$10081>999999,Sheet2!$B$2:$B$10081=0,Sheet2!$B$2:$B$10081<0))/(OR(Sheet2!$B$2:$B$10081>999999,Sheet2!$B$2:$B$10081=0,Sheet2!$B$2:$B$10081<0))*(ROW(Sheet2!$B$2:$B$10081)-ROW(Sheet2!$B$1)),ROWS($P$73:P73))))
ただし、aggregate() の 3 番目の引数は配列である必要があり、ブール値として評価される OR 関数を使用したため、これは機能しません。そうは言っても、上記の 3 つの条件をチェックするために OR 関数を適切に統合する方法がわかりません。
答え1
追加するとまたは各エントリに同等の関数があります。つまり、
(myRng>999999)+(myRng<=0)
{1..0}
条件が満たされているかどうかに応じて配列を返します。
関数の配列を作成するにはAGGREGATE
、次のようになります。
1/((myRng>999999)+(myRng<=0))*myRng
答え2
Excel 365 を使用していて、FILTER 関数にアクセスできる場合は、FILTER を使用して配列を返すことができます。各 OR 条件は、次+
のように括弧で囲み、 で区切ることができます。
具体的には:
...加算演算子 (+) を指定した FILTER 関数を使用して、配列範囲 (A5:D20) 内で Apple が含まれるか、または東部地域にあるすべての値を返します...
データについてあまり詳しく知らなくても、これに似たものは正しい配列を返すはずです (一致する行をすべて返す場合は、実際には small で集計する必要はありません)。
=FILTER(Sheet2!$A$2:$A$10081,(Sheet2!$B$2:$B$10081>999999)+(Sheet2!$B$2:$B$10081=0)+(Sheet2!$B$2:$B$10081<0))
しかし... Excel 2016 ではこれが使用されるので、FILTER は機能しないというコメントを見ました (他の人の役に立つかもしれないので、回答に残しておきます)。
Excel 2016 (および Excel 365) では、特定の条件を満たす行を検索しようとしているだけなので、Power Query を使用できます。
サンプルデータをいくつか作成しました:
次に、データ内の任意のセルを選択し、[データ] > [データの取得と変換] > [テーブル/範囲から] を使用して、データに対するクエリを含む Power Query エディターを開きます。
Power Query エディターで、使用する条件に基づいて値をフィルターします。
次に、[ホーム] > [閉じて読み込む] を使用して、データをワークブックに戻します。
最後のステップは、クエリが適切な間隔で更新されることを確認することです。
クエリ結果にカーソルを置き、[クエリ] > [プロパティ] に移動して、必要に応じて更新プロパティを構成します。