web-dev-qa-db-ja.com

指定された2つの列の値が等しい行の数を数えます

MS Excel/LibreOffice Calc/Googleスプレッドシートに数字の付いた2つの列があります。両方の列で同じ値を持つ行の数を数えたいと思います。

次の例では:

_Column A | Column B
   1     |     4
   2     |     2
   3     |     5
   3     |     3
   5     |     3
_

同じ数の2つの行があります:行2(2 = 2)と4(3 = 3)。 =SUM(A1:A5=B1:B5)のようなソリューションが機能することを望んでいました。残念ながら、そうではありません。

[〜#〜] update [〜#〜]

値の各ペアを行ごとに比較する3番目の列を作成すると、解決策が簡単になることはわかっています(DaveとJoeが提案したように、たとえば=IF(A1=B1, 1, 0)を使用)。ただし、スプレッドシートを中間結果で乱雑にしたくないので、ワンライナーを探しています。

2
John Manak

あなたはほぼ正しいです。次のように数式を少し調整できます。

{=SUM(IF(A1:A5=B1:B5,1,0))}

カーリーなしでこれを入力してください{}角かっこ、を押します Ctrl+Shift+Enter Excelがそれが配列数式であることを認識できるようにします。中括弧は、それが配列数式であるという事実を表しています。

4
Andi Mohr

Excelでは、Andiのソリューションと同様の方法でSUMPRODUCT関数を使用できますが、「配列エントリ」を回避します。

=SUMPRODUCT(0+(A1:A5=B1:B5))

これは(Andiのように)空白行もカウントするので、このバージョンへの変更を避けたい場合は、次のようにします。

=SUMPRODUCT((A1:A5<>"")*(A1:A5=B1:B5))

3
barry houdini

数字や文字に適用できるように、IFElseステートメントを使用して簡単にします

C1で、以下を追加します

=IF(A1=B1, 1, 0)

次に、数式をテーブルの長さ方向にドラッグし、その下にセル全体を合計します。

 =SUM(C1:C10)   // enter correct row numbers!
1
Dave

別の列を使用して部分的な結果を格納できる場合は、次の方法で実行できます。

_Column A | Column B | Column C (equal condition)
  1      |   4      | =IF(A1=B1;1;0)
  2      |   2      | =IF(A2=B2;1;0)
  3      |   5      | =IF(A3=B3;1;0)
  3      |   3      | =IF(A4=B4;1;0)
  5      |   3      | =IF(A5=B5;1;0)
_

セルC6に、次の数式を記述します=SUM(C1:C5)

0
Joe Taras