いつもお世話になっています。
今学校の文集作成をしています。
そこで「なんでもランキング」があるのですがこの得票数を今Excelで計算しています。
クラス40人なので
A2~A42まで出席番号
B2~B42まで名前
そして
C2~C42までが質問1に対するその人得票数
D2~D42までが質問2に対するその人の得票数・・・
というかたちで質問25まであります。
このときに、どこのセルでもいいので質問1の得票数TOP5、質問2の得票数TOP5・・・といった形で表示させていのですがどのようにしたらいいのでしょうか???
本当に私的なことでごめんなさい(><)
No.9ベストアンサー
- 回答日時:
#6です。
ご要望について#6の下記の部分を貼りつけ直してみてください。
'----結果を列にセット
For i = 1 To 40
Cells(i + 1, s) = n(i)
Cells(i + 1, s).Offset(0, 1) = d(i)
If i > 4 Then
If d(i) > d(i + 1) Then Exit For
End If
Next i
End Sub
テストの一例では
名前1692
名前3683
名前1782
名前382
名前674
名前1074
名前3474
名前1474
(1)上位人数5人入賞(#3)、
(2)点数上位5種入賞、
(3)上位5人但し5人目と同点全員入賞(本件)など考えられますね。
(2)は下記の部分を貼りつけして修正する。
'----結果を列にセット
shu = 0
For i = 1 To 40
Cells(i + 1, s) = n(i)
Cells(i + 1, s).Offset(0, 1) = d(i)
If d(i) <> d(i - 1) Then shu = shu + 1
If shu > 4 Then Exit For
Next i
End Sub
テスト例
名前1692
名前3683
名前1782
名前382
名前674
名前1074
名前3474
名前1474
名前3365
No.8
- 回答日時:
#3です。
#3に対する補足でなかったので、どうしようかと思ったのですが、一応回答します。
>#3に方の方法を試したところ
>=INDEX($B$2:$B$42,LARGE(($C$2:$C$42=BB2)*ROW($C$2:$C$42)
>,COUNTIF(BB$2:BB2,BB2))-1)
>で#VALUE!となってしまいました・・・。
単純に上記の関数を入力して、Enter押したのではないでしょうか?計算式の下に「Ctrl+Shift+Enterで配列数式にします。」と書いておきましたが、分かりにくいですか?
上記関数を入力したら、Enterを押すのではなくCtrl+Shift+Enterを押して下さい。
正しく入力されていれば、上記の式の両端が{}になります。
{=INDEX($B$2:$B$42,…中略…,BB2))-1)}
↑こんな感じです。 ↑
あと順位の付け方ですが、
>1位、2位、2位、3位、4位でお願いします!
#3では1から順にBA2から入力するようにしていますが、これは変えずに、表示用の順位をつける方がいいと思います。
列の順序が変ですが、仮にBDに表示用順位を出すようにします。
BD2には数字の1を入力します。
BD3には式で
=IF(BB2=BB3,BD2,BD2+1)
を入力します。下にコピーします。
列の順序が気に入らない場合、列を選択して「切り取り」、挿入したい列を選んで、「切り取ったセルの挿入」で計算式が変にならずに加工できると思いますので、試してみて下さい。
回答ありがとうございます。!
質問1のランキングは無事作成できました!
これは質問2に移るとき「$C$2・・・」がが絶対参照になっているのでコピー&ペーストではできませんよね・・・?以下の作業を効率よくやる方法があればぜひお願いします!
なんどもすいません!
No.7
- 回答日時:
得票が同数ある場合を想定していませんでした。
=RANK(LARGE(Sheet1!C:C,ROW()-1),Sheet1!C:C)&"-位"&INDEX(Sheet1!$A:$Z,MATCH(LARGE(Sheet1!C:C,ROW()-1),Sheet1!C:C,FALSE),2)&"-"&LARGE(Sheet1!C:C,ROW()-1)
「n位-名前-得票数」で表示。
尚、データの入力されているシート名がSheet1で無い場合は数式中のSheet1の部分を実際のシート名に変えてください。
詳しくありがとうございました。
すると一位などはしっかりと表示されるのですが、
同数順位のとき名前がうまく出ず、名前の部分が「-」となってしまったり、同じ人の名前が表示されるようになってしまいました(><)
No.6
- 回答日時:
関数で希望と言うことで、題意に合わないですが、VBAでの解を参考までに。
変え方を知ると、色々なケースで使えると思います。ツール-マクロ-VBE-挿入-標準モジュールででた
画面に、下記をコピーして、貼りつけ。その後にメニューの「実行」。
Sub test01()
Dim d(100), n(100)
'----列指定
c = InputBox("対象列=")
s = InputBox("結果列=")
'----データを配列にセット
For i = 1 To 40 '40人分
d(i) = Cells(i + 1, c) 'データ列から
n(i) = Cells(i + 1, "B") '名前列から
Next i
'-----データ列で降順並べ替え
For i = 1 To 40
For j = i + 1 To 40
If d(i) < d(j) Then
w1 = d(i): w2 = n(i)
d(i) = d(j): n(i) = n(j)
d(j) = w1: n(j) = w2
End If
Next j
Next i
'----結果を指定列にセット
For i = 1 To 5 '5人に限り
Cells(i + 1, s) = n(i)
Cells(i + 1, s).Offset(0, 1) = d(i)
Next i
End Sub
40人が変った場合(100人まで)
結果を出す5人が変った場合
生徒データスタート行が変った場合
どこを変えるべきか判りますか。
ありがとうございます!あと少しでうまくいきそうです!
このとき1位が1人、2位が3人、3位が5人のとき自動的に3位の人が一人しか入りませんが、これを3位全員表示することはできるのでしょうか?
No.5
- 回答日時:
Sheet2 に結果を抽出します。
1.Sheet2の一行目に質問1~質問25のタイトル作成
2.A2セルに
=INDEX(Sheet1!$A:$Z,MATCH(LARGE(Sheet1!C:C,ROW()-1),Sheet1!C:C,FALSE),2)&"-"&LARGE(Sheet3!C:C,ROW()-1)
3.A2を下方へ順位の必要分フィルダウン(下方へコピー&ペースト)
eg.5位までならA6,6位-A7,8位-A9....
4.A2~フィルダウンしたセルをフィルライト(右方へコピー&ペースト)
各セルに「名前-得票数」という形で表示します。
No.4
- 回答日時:
☆TOP5の表示の仕方
5人の名前を5つのセルを使って表示するのでしょうか?
それとも多いほうから5個の数字を表示するのでしょうか?
それとも得票数の数字の右のセルに「第何位」と表示するのでしょうか?
それとも上位5位まで数字の色やセルの色を変えて目立たせるのでしょうか?
☆同順位の処理
同じ得票数があった場合、どのように表示させたいでしょうか?
1位、2位、2位、4位、5位?
1位、2位、2位、3位、4位?
1位、2位、2位、3位、4位、5位?
補足をお願いいたします
この回答への補足
親切にありがとうございます!
1位、2位、2位、3位、4位でお願いします!
あと名前と得票数が表示されるようにしたいです。
#3に方の方法を試したところ
=INDEX($B$2:$B$42,LARGE(($C$2:$C$42=BB2)*ROW($C$2:$C$42),COUNTIF(BB$2:BB2,BB2))-1)
で#VALUE!となってしまいました・・・。
なぜでしょう・・・???
No.3
- 回答日時:
得票数Top5で出したい結果は、得票数が何票だったかだけでいいのでしょうか?
それとも、名前で出すのでしょうか?
得票数だけなら、すでに回答のあるLARGE関数を使えばいいですが、名前を出すのでしたら、得票数で同数が存在する時の処理がちょっとややこしくなります。
まず離れたセルということでBA列で作業することとします。
BA1に順位、BB2に得票数、BC3に名前と入力します。
BA2から下に1,2,3,4,5,6,7と入力していきます。(同数5位が考えられるため、若干余裕を持たせます。適当に決めて下さい。)
BB2セルに
=LARGE($C$2:$C$42,BA2)
と入力し下にコピーします。
BC2セルに
=INDEX($B$2:$B$42,LARGE(($C$2:$C$42=BB2)*ROW($C$2:$C$42)
,COUNTIF(BB$2:BB2,BB2))-1)
でCtrl+Shift+Enterで配列数式にします。下にコピーします。
同数の場合、出席番号が大きい人から上に表示されるようになります。
同数が存在しないなら、BC2セルは
=INDEX($B$2:$B$42,MATCH($BB2,$C$2:$C$42,0))
でOKです。
No.2
- 回答日時:
たとえば、質問の下43行目から
質問1のTOP1は、=LARGE($C$2:$C$31,1)
TOP2は、=LARGE($C$2:$C$31,2)
TOP3は、=LARGE($C$2:$C$31,3)
TOP4は、=LARGE($C$2:$C$31,4)
TOP5は、=LARGE($C$2:$C$31,5)
というように入力します。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 配列<選挙> 4 2023/07/31 15:07
- 行政学 大統領選挙について質問です! なぜ、得票数が多いのに落選することがあるのですか? また、得票数以外の 6 2022/10/11 20:26
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- 政治 政治と金と組織票について質問です。献金額や集票力が高い有力な支持母体が協力しなかった場合、その政党は 5 2022/08/16 03:27
- 政治 中国は一票の格差4倍で、日本は3倍ですが、それでも日本は民主主義国なら中国も同じですよね? 2 2023/03/16 04:52
- 政治学 もはや選挙は「サンプル調査」なのか? 1 2023/04/15 14:30
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- 健康保険 後期高齢者医療被保険者証の2割負担について 3 2022/09/19 14:31
- 政治 ガーシーとNHK党の政党要件について 1 2022/10/23 23:09
- Excel(エクセル) Excelについて質問があります。 関数の数値入力についてなのですが、 b1にー c1に数値 がある 1 2023/05/28 12:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】エクセルにかいてあ...
-
エクセルの行の抽出について質...
-
Excel初心者です。 詳しい方、...
-
スプレッドシート クエリ関数 1...
-
別シートからの文字を変更
-
Excel初心者です。 詳しい方、...
-
Excel 2019 のピボットテーブル...
-
MOS365 Excel Expert / Excel R...
-
エクセルの数式で教えてください。
-
数学 Tan(θ)-1/Cos(θ)について...
-
4つのパターンを表示するEXACT...
-
各ページの1番上の表示について
-
INDIRECTを使わず excelで複数...
-
関数を教えて下さい。
-
Excelのグラフ軸について
-
Excel:一部のフォントでセルの...
-
エクセルで指定した日付、店舗...
-
Excel ウインドウ枠の固定をす...
-
EXACT関数とIF関数の組み合わせ...
-
写真のコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報