アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
以下のような表があり、重複したデータは1とカウントし、数を数えることはできますでしょうか?

番号  名前 年月 
111-A 山田 1/1
111-A 山田 1/1 
222-A 佐藤 1/2
222-A 佐藤 1/2
333-A 山田 1/3
444-A 鈴木 2/1
444-A 鈴木 2/1
555-B 山田 1/4
555-B 山田 1/4
666-B 佐藤 1/5
666-B 佐藤 1/5

上記ような表があります。
番号が重複している場合はそれを1とカウントし、月別で誰が「-A」、「-B」それぞれいくつあるのか算出し、リストにしたいのです。

理想は下記のような表です。
1月 2月
-A -B -A -B
山田 2 1 0 0
佐藤 1 1 0 0
鈴木 0 0 1 0

SUMPRODUCTやCOUNTIFを使ってしてみましたが、どこを誤っているのか求めている数値が出てきません…
どうかご教示の程よろしくお願いいたします。

A 回答 (1件)

SUMPRODUCT関数やCOUNTIF関数をどのようにしたのだろうか。


条件さえしっかり指定すれば、普通にカウント可能だ。

どのように条件を指定したのかを示してください。
何が原因で間違えているのか、何が不足しているのかを指摘したりアドバイスをすることができます。

・・・が、
とりあえず、SUMPRODUCT関数を使った場合の考え方の解説をしてみます。
(このまま使用できるわけではないので、理解したうえで工夫をしてください)

SUMPRODUCT関数は、指定した配列同士で掛け算をして、その合計を求める関数だ。
(面倒なので配列は2つで説明)

=SUMPRODUCT(A1:A3,B1:B3)
は、
=A1*B1 + A2*B2 + A3*B3
と等しい。
条件を設定して数をカウントさせる場合は、
=(A1="-A")*(B1="1月")+(A2="-A")*(B2="1月")+(A3="-A")*(B3="1月")
のようにすればよいので、
=SUMPRODUCT((A1:A3="-A"),(B1:B3="1月"))
とすればよいのだが、【配列の結果】がこのままでは"TRUE"と"FALSE"のままで、SUMPRODUCT関数内部計算は必ず0になるため、
カンマ(,)で配列を区切るのではなくアスタリスク(*)で直接「積」を求めるようにする。
(SUMPRODUCT関数は数値以外はすべて0として扱うことを考慮する必要がある)
すると
=SUMPRODUCT((A1:A3="-A")*(B1:B3="1月"))
こうなる。

"TRUE"と"FALSE"をそれぞれ「1」「0」と扱うために
=SUMPRODUCT((A1:A3="-A")*1,(B1:B3="1月")*1)
としてもよい。

あとは、この「"-A"」「"1月"」の部分に適合するように配列部分の「A1:A3」や「B1:B3」をRIGHT関数やTEXT関数などで置き換えるだけだ。
例:
 RIGHT(A1:A3,2)
 TEXT(B1:B3,"m月")


自分なら
COUNTIF関数ではなく、
COUNTIFS関数を使うが...。
(COUNTIFS関数はExcel2007から追加された関数です)
COUNTIF関数を配列数式にすることでもできるがお勧めしない。
    • good
    • 0

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