• ベストアンサー

【Excel】論理和の応用

こんにちは。 当方会社で講演会を定期的に開催しています。 その講演会の参加者リストを集計しており、リピートがどれくらいいるかをしらべています。 現在エクセル上では、 メアド   名前  第1回  第2回  第3回 a@a.com   A    1    0    0  a@a.com   A    0    1    0  a@a.com   A    0    0    1  b@a.com   B    1    0    0  b@a.com   B    0    1    0  b@a.com   B    0    0    0  というようなデータになっています。 これを自動的に メアド   名前  第1回  第2回  第3回 a@a.com   A    1    1    1  b@a.com   B    1    1    0  というように集計したいのですが、なにか良い関数例は有りますでしょうか? いわゆる論理和の計算だとは思いますが、メアドをキーにグルーピングしたデータを論理和計算するような感じだと思います。 元々はバラバラだったリストを、現在メアドをキーに並べなおしている状態で、全体のリストは2000名、重複されているのでその2/3近くあり、とてもじゃないですが手で出来るものではありません。 違うメアドで申し込んだけど、同一人物だったのはどうするか?ということは無視してください。 お知恵を拝借したく、よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

元のデータが「Sheet1」にあるとして、まず別シートに重複のない参加者リストを作ります。関数でもできるのですがフィルタを使う方が簡単だと思いますのでそちらの方法を書きます Sheet1のA列を選択し、「データ」→「フィルタ」→「オートフィルタ」→「データ」→「フィルタ」→「フィルタオプションの設定」を選ぶ。「重複データは無視する」にチェックを入れて「OK」 これで重複無しのリストが表示されるので、A列(アドレス)、B列(氏名)をコピーして別シートに貼り付ける (先頭行はタイトルで、データは2行目からとします) 次に、今貼り付けた別シートでデータ先頭行のC2に以下の式を貼り付けて、D、E列にコピー。最後にC2:E2を下方向にコピー =IF(SUMIF(Sheet1!$A$2:$A$2100,$A2,Sheet1!C$2:C$2100)>0,1,0)

kazu2296
質問者

お礼

ありがとうございます。できました! SUMIFなんて関数があったんですね・・・

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

同じ名前の人の最大値でいいなら AA2="a@a.com"   AB2="A"で AC2=SUMPRODUCT(MAX(($A$2:$A$2000=$AA2)*(C$2:C$2000))) で右方向にCOPY 範囲は実際のデータにあわせてください。

kazu2296
質問者

お礼

ありがとうございます。 これでも出来るんですね。 でも、これもまずは重複無しのメールアドレスと名前のリストを作る必要があるということですね。 まだまだ私も勉強不足みたいです。どうもありがとうございました。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

データ→集計で集計機能を使います。 データはメアドか名前でソートされているとします。     A   B  C   D   E 1  メアド 名前 第1回 第2回 第3回 2 a@a.com  A   1   0   0 3 a@a.com  A   0   1   0 4 a@a.com  A   0   0   1 5 b@a.com  B   1   0   0 6 b@a.com  B   0   1   0 7 b@a.com  B   0   0   0 となっているとし、このデータの中のどこかを選択しておいて、データ→集計を行ないます。 グループの基準=メアド 集計の方法=合計 集計するフィールド=第1回、第2回、第3回 現在の集計表と置き換える にチェック 集計行をデータの下に挿入する にチェック OKを押すと集計が終わります。 左のアウトラインの小さな<2>を押すと、     A   B  C   D   E 1  メアド 名前 第1回 第2回 第3回 5 a@a.com  計   1   1   1 9 b@a.com  計   1   1   0 10 総計       2   2   1 のようになります。 これでよければいいですが、名前を表示したければ、上の表で説明すると、 シートのB5:B9を選択して、編集→ジャンプ→セル選択で可視セルを選択してOK。 B5がカレントセルになるはずなので、=B4 と入力して、Ctrl+Enter とします。 統合機能でも同じように簡単にできますが、<メアド>と<名前>を両方出したければ、集計の方が簡単かもしれません。(当方、Excel2000です)

kazu2296
質問者

お礼

ありがとうございます。 私もこの方法は知っていましたが、これだと現在のデータの下に集計が表示されてしまいます。 集計後のデータだけを別のシートに出すにはまた一手間かかるかと思います。 残念ですが、他の皆様のやり方のほうが今回のニーズに合っております。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 すでに回答も出ているようですが、私は、データの「統合」を使ったらよいと思います。 最初に、 ここの例では、G1 から メアド   名前  第1回  第2回  第3回 タイトル(フィールド)行だけをコピーします。 そこにセルポインターを置いたまま、(ここが大事) データ-統合 集計の方法(F) 「最大値」 統合元範囲で、範囲を選択します。 今回のサンプルの例では、以下のようになっています。 「Sheet1!$A$1:$E$7」 追加ボタンをクリック 統合の基準 □上端行 □左端行 両方ともチェックを入れます。 それで、OK をクリックしますと、一応、メアドでリストが出来上がりますが、名前が出てきません。そこで、 名前の部分は、メアドと名前は一致しているはずですから、 G2 は、統合で出てきたメアド位置です。 =VLOOKUP(G2,$A2:$B$7,2) とすれば、名前が出てきます。後は、そのセルから、数式をコピーすればよいです。

kazu2296
質問者

お礼

ありがとうございます。 このやり方ですと、集計しないデータ(メアド、名前、会社名等々)が多い場合は、後でVLOOKUPをやる手間が増えるので、少しめんどいですね。 でも、VLOOKUP以外関数を使わないので、それはそれでよいかもしれません。

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。 『関数例』...ではないですが、[ピボットテーブル]や[統合]について調べてみるのも良いかもしれません。 http://www11.plala.or.jp/koma_Excel/pivot_menu.html

関連するQ&A