こんにちは。
以下のような表があり、重複したデータは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件)
- 最新から表示
- 回答順に表示
No.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関数を配列数式にすることでもできるがお勧めしない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- その他(プログラミング・Web制作) Python pandasについての質問です。 日付 名前 ◯月◯日 佐藤 ・ 伊藤 ・ 山田 ・ 2 2022/06/13 17:16
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- 野球 世界一ですか 4 2022/11/11 06:17
- 野球 世界一ですか 2 2022/11/11 06:15
- 野球 日本代表 これで世界一ですか 2 2022/11/11 05:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
C#の質問
-
パソコンキーボードで時分秒を...
-
変数を動的に作るには?
-
動的配列が存在(要素が有る)か...
-
VBAで配列の計算
-
C言語 配列からランダムに素数...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
VBA 配列数式的に一括してR...
-
配列の要素数を超えた参照のコ...
-
VBで作った乱数を一度も重複さ...
-
等間隔にベクトルを作成。(MAL...
-
遅延バインディングを使用でき...
-
ラジオボタンのチェックをEnter...
-
C#での画像送信プログラム(ネ...
-
VB.net 引数で配列変数を渡す際...
-
int型配列の一括初期化
-
【MFC】GetCount()とGetSize()...
-
C# Splitと配列の複合方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
パソコンキーボードで時分秒を...
-
VBAで配列の計算
-
EXCEL VBA で、0から?1から?
-
変数を動的に作るには?
-
VB.net 引数で配列変数を渡す際...
-
動的配列が存在(要素が有る)か...
-
VBで作った乱数を一度も重複さ...
-
配列の要素数を超えた参照のコ...
-
複数のテキストボックスに同じ...
-
C言語 重複しない4ケタの乱数...
-
javaプログラムについて
-
C#の質問
-
Visual C++ でコントロールを...
-
遅延バインディングを使用でき...
-
Excel VBAで配列の途中から(X)M...
-
排列と配列の漢字の使い分けは
-
For文と配列
-
VBでbyte配列型のインスタンス...
-
C言語で3次元配列の課題をして...
おすすめ情報