条件が行固有の Excel COUNTIFS

条件が行固有の Excel COUNTIFS

条件が行固有であり、特定の値またはセルにリンクされていない次のデータに対して COUNTIF を実行しようとしています。

たとえば、次の例では、列 B が列 A の 2 倍である行をカウントしようとしています。

B
1 5
2 6
5 3

正しい構文は「=COUNTIF(B:B, "="&A:A *2)」で、各行の列 B が列 A の 2 倍であるかどうかをチェックするものだと思いますが、常に 0 が返されます。正しい結果は 2 です。

個別の # または単一のセル参照 (たとえば "="&A2) のみが許可されているようですが、チェックする条件を各行に固有のものにしたいと思います。

これを実行するのを妨げる別の関数または構文エラーがありますか? ありがとうございます

答え1

使用SUMPRODUCT

=SUMPRODUCT(--(A1:A4*2=B1:B4))

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

注: サンプルデータでは、結果すべきゼロにならないように、ゼロ以外の結果を得るために1行追加しました

答え2

サンプルデータには、B列がA列の値の2倍になるインスタンス(行)はありません。

=SUM(IF(B1:B3 =A1:A3*2,1,0))3D/配列数式を使用すると、自動的に実行されます。

LibreOfficeでは配列数式は++で入力する必要がありますCTRLが、Excelでも同じかどうかはよくわかりませんSHIFTENTER(そして試す手段がない)

答え3

元の式の唯一の問題は、何らかの方法で合計する必要があることです。 1 つの方法は、それをどのようにcybernetic.nomad行うかです。 もう 1 つは、ポスターの式を関数で囲むことですSUM()

列 B の値が条件を満たしているかどうかを示す 1 と 0 のリストを取得する方法は他にもあります。 は、Hannu率直に言って、この一連の関数をあまり使用していないため、私の「頼みの綱」となる方法を示していますCOUNT。(私の限界はわかっています。過去 8 年ほど Excel ヘルプ サイトを見ていて、多くの「不適切な」使用法や、常に使用していた結果を得るためのより直接的な方法を発見しましたIF()。)

ただし、これを行う方法は他にもあります。その 1 つは、IF()動作に使用されない各値に対して単純な TRUE/FALSE テストを実行する方法であり、大規模なデータ セットではおそらく高速になります。

=SUM(  (B1:B4 = A1:A4*2)  *1)

これは単純な比較で、TRUE/FALSE 結果の配列を生成します。次に、--のように演算子を使用cybernetic.nomadするか、*1ここで行っているように を使用できます。これにより、リテラル TRUE/FALSE 配列要素が 1/0 配列要素に変換され、SUM()それらを追加できるようになります。(私は を好みます。式に独自の乗算が含まれている場合は、その乗算 (または の代わりに*1を使用する場合は加算) で変換が十分であるため、式の最後に追加しない方が簡単だからです。もちろん、どちらもうまく機能し、多くの人にとって の方が明確であるため、 よりも THEM が維持しやすいでしょう。私たち人間はそのようなものであり、それぞれにとって最善のことです。)ORAND--*1

ただし、このCOUNTファミリは 1/0 を直接生成するため、これは適切な値です。ただし、これを範囲全体に適用する場合は、まだ何かをまとめる必要があります。

関連情報