• ベストアンサー

投票の自動集計

最近エクセルを始めたばかりで 上手く出来ませんのでどなたか教えてください。 200人の人にゼッケンを付け、審査員20名の投票(一人当たり2名) したものを、投票の多い順に表示したいのです。 投票数が同数の場合はゼッケン番号の少ないほうを上位にしたいと思います。 宜しくお願いします。

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

  • ベストアンサー
  • takuokweb
  • ベストアンサー率25% (10/39)
回答No.4

これは何かの演習問題でしょうか。Excel初心者には若干難度の高い問題みたいですね。ほかの回答者様の示されたように、オートフィルタや並べ替えの方法を使うのが最もシンプルですが、ここはできれば汎用のファイルを作って、スキルアップを図ってはいかがでしょうか。 おっしゃるとおり得票数は、COUNTIF関数で求められますが、順位は、RANK関数を使うとよいと思います。ただ、得票数が同数の場合、ゼッケンの若い方を上位にするというところはひと工夫必要になると思います。私の場合、こういうときよく使う手が、複数のセル(列)の値を参照、加工した別のセル(列)を用意し、その値を、検索や判定対象として利用します。非常に応用範囲が広いので是非活用されることをお勧めします。 以下、若干冗長ですが、ご参考までに回答例を示します。(各テーブルの1行目はタイトル行としています。なお(1)~(3)はステップ番号としてお受けとめ下さい。) (1) Sheet1に審査員・投票用のテーブルを用意する。 A列(見出し):審査員1~審査員20 B列:投票1、C列:投票2 各欄に投票するゼッケンを入力(全40件) ※ ゼッケンは、表示形式でユーザ定義を「000」に設定すれば見やすい。以下他のシートでも同様。 (2) Sheet2に、ゼッケン、順位判定用のテーブルを用意する。 A列(見出し):ゼッケン(1~200) B列:得票数を求める、次の計算式を入力。(B2を201行までコピー、以下同じ)  =COUNTIF(Sheet1!$B$2:$C$21,$A2) C列:順位判定用として、次の計算式を入力。  =$B2*1000-$A2 ※ 冒頭で説明した、得票数同数時、ゼッケンの若い方を上順位とするための加工列です。(入力後、列を非表示にすると良いです。) D列:確定順位を求める、次の計算式を入力。  =IF($B2=0,””,RANK($C2,$C$2:$C$201,0))  ※ 得票数が0の人は順位が表示されません。 E列:検索用にA列のゼッケンを再掲のため次の計算式を入力。  =$A2 (3) Sheet3に、確定順位とゼッケンを表示する。   A列(見出し):順位として1~○(表示させたい順位)を付番。   B列:(2)で求めた、順位に対応するゼッケンを表示するため、次の計算式を入力。   =VLOOKUP($A2,Sheet2!$D$2:$E$201,2,0) 以上です。(3)でゼッケン番号の横に得票数を表示するのが表としてはベストですが、あえて省いてあります。質問者様において加えてみてください。ご健闘を祈ります。

hayabusa1043
質問者

お礼

ありがとうございました。 感謝いたします。 理解は出来ませんでしたが 完成です。 得票数も表示出来ました。 質問の演習問題では無く、当地区(田舎)で最近盆踊り大会 を始め、審査員による投票で順位決定し賞品を出すことに なり、一昨年は手で集計してましたが、記入ミスで(子供の部、 青年の部、老年の部と分かれてます)短時間での順位決定が出来ず 苦労しました。昨年はある方にマクロ?で作成して頂いたんですが 審査員の数の変更等が有り、直すことも出来ず困惑しておりました。 最近、エクセルを始めなんとか出来ないものかと ネット等で勉強しながら始めはしたが、上手くいかず このサイトを利用させていただきました。

その他の回答 (3)

noname#37676
noname#37676
回答No.3

>何処かのセルに 何名投票したか分かるように ならば、A列に「200人のゼッケン」あるとして、B列「=COUNTIF($投票結果範囲40行,A2)」 C列に「=RANK(B2,$B$2:$B$101)」とすれば順位が出ます。C列基準に降順並べ替えしてください。 >投票されてない方は表示しないように これは、関数では不可とお思います。B列基準にオートフィルタや手作業で非表示にしてください。

noname#37676
noname#37676
回答No.2

>200人の人にゼッケンを付け、審査員20名の投票(一人当たり2名) 投票結果の元データの形式が(?)ですが・・・ A1(ゼッケン番号)、B1(投票数)にタイトルがあり、A2~A41に「審査員20名の投票」結果を羅列したとして、 1、A列を「昇順」で並べ替え 2、B2「=COUNTIF(A$2:A$41,A2)」~B41へフィルコピー 3、A2~B41を選択 4、[データ][フィルタ][フィルタオプションの設定] 「指定した範囲」をチェック、「抽出範囲」を[C1]、「重複するレコードは無視する」をチェックする。 こんなカンジのことですか?

hayabusa1043
質問者

補足

早速の回答ありがとうございます。 僕の書き方が下手で申し訳ありません。 審査員20名が投票したゼッケン番号を表に入力します。 (20×2=40) この40個のデーターを入力したら(しながら) 何処かのセルに 何名投票したか分かるように したいのです。投票されてない方は表示しないように 出来ればと思っています。 関数で、数はカウントされるのですが、順位まで出すことが 出来ないもので。すみません 上手く伝えられなくて roadhさんの方法やってみましたが、フィルターオプションのとこが上手くいきませんでした。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

並び替えを使ってみては如何でしょうか。 例えば、A列ゼッケン番号、B列投票数とします。 (1)A1を選択し、データ→並び替え (2)最優先されるキーをB列、降順にチェック (3)2番目優先されるキーをA列、昇順にチェック (4)範囲の先頭行をデータかタイトル行かを選択→OK

hayabusa1043
質問者

補足

早速の回答ありがとうございます。 僕の書き方が下手で申し訳ありません。 審査員20名が投票したゼッケン番号を表に入力します。 (20×2=40) この40個のデーターを入力したら(しながら) 何処かのセルに 何名投票したか分かるように したいのです。投票されてない方は表示しないように 出来ればと思っています。 関数で、数はカウントされるのですが、順位まで出すことが 出来ないもので。すみません 上手く伝えられなくて

関連するQ&A