プロが教えるわが家の防犯対策術!

Excelで行の件数をカウントしたいです。
表は2つ、
・表1が、ID(重複なし)の一覧の表がA列
・表2が、ID(重複あり)と名前、購入商品がそれぞれD,E,F列

表1,2いずれも2行目からデータが入ってる。

表1のB列に、A列のIDと一致する表2のIDごとの行数をカウントしたい。
ただし購入商品が重複した場合は重複分はカウントしない。

どう数式書いたらよいですか??

A 回答 (2件)

COUNTIF関数で、表2のIDと商品名の組み合わせを数えるようにしてみましょう。


そしてその結果の「1」の行だけを拾うようにすれば良いでしょう。

よくある重複したデータを除いた数を数える方法を応用しています。
やり方は、
 =COUNT(D$2:D2,D2)
この数式を表2のB2セルに記入後、データの最後の行まで複製すると、
同じIDの数を数えることができるので、結果が「1」に数を数えれば、
重複を除いたIDの数を数えられるという方法です。
これを応用して、IDと商品名が同じという条件でカウントさせるのです。
この数式は難しくありませんから、COUNT関数を使った数式の意味をよく考えて自身で作ってみてください。
(ここで説明をしてしまうと「分かったつもり」になるだけですので敢えて説明をしません)
そしてB列とD列の値でカウントをすれば良いという話になります。

一つの数式にすることはできますが、これらを理解していなければ話になりません。
一つずつ手作業で行う手順を数式を使って再現しながら作業を進めましょう。
    • good
    • 1

数式を作成する考え方はNo.1さんが解説しておられます。


COUNTIF関数を活用するというNo.1さんの説明ですが、「購入商品が重複した場合、重複分はカウントしない」という条件があり、IDと購入商品の両方の条件でカウントする必要があります。
このため、COUNIFではなく、複数条件を設定できるCOUNTIFS関数を利用することにしました。あとはNo.1さんの説明のとおり、カウントが「1」になるものを探して数えるということになります。
作業列を使う方法の場合、「1」を数えるのに、ここでもCOUNTIFS関数を使用できます。しかし、今回、作業列を使用しない方法をとっていますので、SUMPRODUCT関数で該当IDが「1」となるケースを数えることにしました。
添付画像①をご覧ください。表2のデータが300行程度あるものと仮定して、表1のB2に

=SUMPRODUCT((IFERROR(INDEX(表2!$D$2:$D$301,AGGREGATE(15,6,ROW(A$1:A$300)/(COUNTIFS(OFFSET(表2!$D$2,0,0,ROW(A$1:A$300)),表2!$D$2:$D$301,OFFSET(表2!$F$2,0,0,ROW(A$1:A$300)),表2!$F$2:$F$301)=1),ROW(A$1:A$300))),"")=A2)*1)

という数式を記述し、下方向へコピーしています。
これで、ご質問者のご希望に沿った結果が表示されているのかどうか判りませんが、添付画像➁のデータ内容で添付画像①が作成されることになります。
なお、当方の環境はEXCEL365のため、配列数式にしていませんが、365以外の環境では上記数式を入力後CTRL+SHIFT+ENTERで確定させて「配列数式」とする必要があります。
「Excelで行の件数をカウントしたいです」の回答画像2
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!