• ベストアンサー
  • すぐに回答を!

エクセルの関数

  • 質問No.4428702
  • 閲覧数112
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 38% (19/49)

下記の様に、『Aセル=グループ種別』『Bセル=参加者名』『Cセル=性別』の表があるのですが、別の形態に集計し直したく、悩んでおります。

---------
グループ|参加者名|
---------
   A    | ○さん |
---------
   A    | ○さん |
---------
   A     | △さん |
---------
   B    | ○さん |
---------
  B    | □さん |
---------
   C     | △さん |
---------



上記の様な表を、下記のように『同一グループ』かつ『同一参加者名毎』の『個数』となるように、エクセルの関数を使って集計したいのですが、何か方法ございますでしょうか? 尚、ピボットテーブルを使えばできる事は承知してるんですが、今回はピボットテーブルを使えない事情がある為、関数でできればと思いご質問しました。

------------
グループ|参加者名|個数 |
------------
   A    |  ○さん  |   2   |
------------
   A    |  △さん  |   1   |
------------
   B    |  □さん  |  1   |
------------
   B    |  ○さん  |   1   |
------------
   C    |  △さん  |   1   |
------------


宜しくお願いします。

質問者が選んだベストアンサー

  • 回答No.3
  • ベストアンサー

ベストアンサー率 59% (574/965)

作業列を2列使う例です。ご参考まで。
....................A.................B........C.....D............E............F.....G
..1....グループ...参加者名....................................................
..2..................A...............○....A○.....2............A..........○.....2
..3..................A...............○....A○...................A..........△......1
..4..................A...............△....A△.....4............B..........○......1
..5..................B...............○....B○.....5............B..........□......1
..6..................B...............□....B□.....6............C..........△......1
..7..................C...............△....C△.....7....#NUM!....#NUM!.......

データ数によらず対応できる様にしたつもりで、その分長くなっています。
E,F列のエラーを出さないようにすると、更に長くなると思われるので、トライしておりません。
C2の式=A2&B2
D2の式=IF(COUNTIF(OFFSET($C$2,0,0,ROW(D1),1),C2)>1,"",ROW())
E2の式=INDEX(OFFSET($A$1,0,0,COUNTA($A:$A),1),SMALL(OFFSET($D$2,0,0,COUNTA($A:$A)-1,1),ROW(A1)),1)
F2の式=INDEX(OFFSET($B$1,0,0,COUNTA($A:$A),1),SMALL(OFFSET($D$2,0,0,COUNTA($A:$A)-1,1),ROW(A1)),1)
G2の式=IF(ISERROR(E2),"",COUNTIF(OFFSET($C$2,0,0,COUNTA($A:$A)-1,1),E2 & F2))
お礼コメント
kontade

お礼率 38% (19/49)

ご回答ありがとうございました。教えていただいた方法を参考にして、自分なりトライ&エラーしながら何とか目的を達成できました。
投稿日時:2008/11/14 17:00

その他の回答 (全3件)

  • 回答No.4

ベストアンサー率 0% (0/4)

No.2
どう考えているか知らないが、
→どう考えようと、あなたに文句を言われる筋合いではない。また、あなたが知る必要も無い。そもそも、わからないから質問しているのに、「どう考えている」と言われても・・。

B列の名前は同姓同名もいる可能性があるので、ソウは行かないので難しい。
→何の手がかりも無く、同姓同名の別人を区別できるとは、誰も考えないから、あなたが無意味・無駄なことを心配する必要は無い。それとも、質問者を馬鹿にしているのか。

作業列にA列+B列の結合セル列を作り、その列で、データーフィルターフィルタオプションの設定の操作をして、重複なきデータを作るのが良い。
→「エクセルの関数を使って集計したい」という、質問の大前提を無視しての回答とは、あなたの読解力には脱帽です。是非、質問の趣旨に沿った内容で、再度回答をお願いします。
  • 回答No.2

ベストアンサー率 27% (4510/16108)

どう考えているか知らないが、A+B列について、2列について重複しないリストを作ることは関数ではたやすくない。
 それが出てしまえば、Countif関数で出来る。
1列だけならA列で第1行目からの件数が1のものを拾えばよいが、B列の名前は同姓同名もいる可能性があるので、ソウは行かないので難しい。
作業列にA列+B列の結合セル列を作り、その列で、データーフィルターフィルタオプションの設定の操作をして、重複なきデータを作るのが良い。
例データ
グループ氏名作業列
A山田A山田
A川上A川上
A山田A山田
A渡辺A渡辺
C山田C山田
C佐藤C佐藤
A山田A山田
A木村A木村
B下村B下村
C渡辺C渡辺
B鈴木B鈴木
C渡辺C渡辺
C山田C山田
B下村B下村
B下村B下村
C列はC2に=A2&B2  下方向に式複写
ーーーーー
K1:M1に
グループ氏名作業列 をコピー

A1:C16範囲指定
データーフィルターフィルタオプションの設定
指定した範囲にチェック
リスト範囲 A1:C16
検索条件範囲 Sheet1!$M$1  <-いままでは1列だけを問題にすればよい場合がほとんどだったが、小生には初めてだが、こうすると
C列の重複しない行の、A-C列を持ってこれるようだ。(注)
抽出範囲 Sheet1!$K$1:$M$16
「重複するレコードは無視する」にチェック
OK
結果
グループ氏名作業列
A山田A山田
A川上A川上
A渡辺A渡辺
C山田C山田
C佐藤C佐藤
A木村A木村
B下村B下村
C渡辺C渡辺
B鈴木B鈴木
件数は、1列のカウントなのでCOUNTIFでよくて
N2に =COUNTIF($C$2:$C$16,M2)
下方向に式を複写
結果
グループ氏名作業列件数
A山田A山田3
A川上A川上1
A渡辺A渡辺1
C山田C山田2
C佐藤C佐藤1
A木村A木村1
B下村B下村3
C渡辺C渡辺2
B鈴木B鈴木1
ーーー
(注)の部分がうまく行くか心配だが、類推してやってみてください。
お礼コメント
kontade

お礼率 38% (19/49)

ご回答ありがとうございました。教えていただいた方法を参考にして、自分なりトライ&エラーしながら何とか目的を達成できました。
投稿日時:2008/11/14 17:01
  • 回答No.1
作業列としてD,E列を使います。また、表の最下行の次の行は空行にします。

(1)A列とB列でデータを並べ変える(昇順または降順に)
(2)D2セルに =IF(A2<>A1,1,IF(B2<>B1,1,D1+1)) 
   E2セルに =IF(D2<D3,"",1) 
   と入力して、それぞれ下へコピー
(3)オートフィルタで、E列のセルが 1 となっているものを抽出

これでお望みの結果が得られるでしょうか。
お礼コメント
kontade

お礼率 38% (19/49)

ご回答ありがとうございました。教えていただいた方法を参考にして、自分なりトライ&エラーしながら何とか目的を達成できました。
投稿日時:2008/11/14 17:01
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

ピックアップ

ページ先頭へ