28

2つの配列をOR演算して、Excelで配列を作成しようとしています。例として、2つの配列を、、、A1:A3とし、、、とします。78-3B1:B34-8-8

これはかなり単純なはずですが、

OR ( A1:A3 > 0 ; B1:B3 > 0 )

TRUE期待している配列の代わりに戻ります(TRUE, TRUE, FALSE)

もちろん、私は次のような汚いトリックを使うことができます

(((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1

しかし、誰がそれを維持したいと思いますか?

Ctrlまた、「CSE( + Shift+ Enter)Formulas」(http://www.mrexcel.com/articles/CSE-array-formulas-excel.php )の周りを検索するものがあるかもしれませんが、それは本当に黒魔術のように見えます。

簡単なことを見逃しましたか?

それについて興味がある人のために、私が構築しようとしている実際の式はもちろんもう少し複雑です。SUMPRODUCTを(経由して)すべての行をカウントしようとしています(status == A OR status == B) AND Date = some cell。私が探しているORは、私の配列の1つSUMPRODUCTにすぎず、セルで定義されていません(簡単すぎるでしょう)。

4

6 に答える 6

31

通常、「配列数式」で OR または AND を使用することはできません。これは、ここで発見したように、単一の結果しか返さないためです (AND は、すべての条件が TRUE の場合にのみ TRUE であり、OR は TRUE です。期待するので、あなたの例では、6 つの値の少なくとも 1 つが正である限り TRUE になります)。

+ の代わりに + を効果的に使用して、あなたの提案に似たものを使用しますが、最初の 2 つ *1 は必要ありません。+ は強制されるため、これで十分です。

=((A1:A3 > 0) + (B1:B3 > 0) >0) *1

ただし、1つの列が1つまたは別の可能性がある場合、それは相互に排他的であるため、おそらくそれは必要です

=(A1:A3="A")+(A1:A3="B")

于 2012-04-12T20:13:02.770 に答える
6

これを回避するクリーンで比較的簡単な方法は、ネストされた IF ステートメントを使用することです。

IF(A1:A3 > 0, TRUE, IF(B1:B3 > 0, TRUE, FALSE))

これは、A の数値が 0 より大きい場合は TRUE を返し、そうでない場合、B の数値が 0 より大きい場合は TRUE を返し、それ以外の場合は FALSE を返します。

基本的に、独自の OR 関数を作成するだけです。AND でも同じことができます。条件と否定がある限り、それらから他のすべてを作成できます。

于 2014-04-03T13:17:03.730 に答える
3

テーブル内の特定のデータの中央値に対して配列数式を実行しました。たとえば、データ内にグループ X、Y、および Z がありました。X と Y の 2 つのタイプのデータの中央値を取得したかったので、配列内で OR ステートメントを使用できませんでした。

私がしたことは、元のデータセットに新しい列を作成することでした. IF列A=X or A=Yだった、表示「1」、IF以外表示「0」

次に、新しい列に基づいて配列数式を作成しました。この列ではすべてのデータ グループが 1 または 0 として再分類されたため、配列内の OR ステートメントは不要になりました。

それは私にとってはうまくいきました。この新しいIFステートメントを台無しにすることなく、新しいデータを元のテーブルに簡単にコピーして貼り付けることができるので、簡単に更新できます。

于 2014-05-16T00:12:36.340 に答える
3

このIF関数を配列の結果で使用すると、一連の 1 と 0 が OR として得られます。例えば:

IF(((A1:A3>0)+(B1:B3>0)),1,0)

これが最も簡単な方法だと思います。

于 2018-08-20T11:26:43.417 に答える