dポイントプレゼントキャンペーン実施中!

Excel関数で、名簿順で入力すると同時に別シートに成績順でそのデーターを表示する時の関数をお教え下さいませんか。ソートすることはできますが、別シートに入力と同時にできないかと思ってのことです。
例えば、こんなデーターを別シート成績順で表示させたい
1 A君 25点
2 B君 83点
3 C君 35点
4 D君 25点
5 E君 98点
7 F君 52点

A 回答 (5件)

No.1です。



>質問したときのAの氏名が
>D列にあります
>質問したときのBの点数が
>AA列(合計点数)にあります

というコトですので、
↓の画像のような配置でSheet2のA・B列に表示するとします。
今回は二通りの方法でやっています。

方法(1)
前回同様、配列数式の場合(Sheet1の作業用の列は不要です)
Sheet2のB2セルに
=IFERROR(LARGE(Sheet1!AA:AA,ROW(A1)),"")
A2セルに
=IF(B2="","",INDEX(Sheet1!D$1:D$50,SMALL(IF(Sheet1!AA$1:AA50=B2,ROW(A$1:A$50)),COUNTIF(B$2:B2,B2))))
A2セルは前回同様、配列数式です。
A2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピー!

方法(2)
画像のようにSheet1に作業用の列を設けます。
(画像ではAB列にしていますが、実際は使っていない列にします)

Sheet1の作業列AB2セルに
=IF(AA2="","",COUNTIF(AA:AA,">"&AA2)+COUNTIF(AA$2:AA2,AA2))
という数式を入れフィルハンドルでずぃ~~~!っと下へコピーしておきます。
(これで見た目は同順位のない「ランク」が表示されます)

Sheet2のB2セルの数式は方法(1)と同じ数式を入れます。
A2セル(配列数式ではありません)に
=IFERROR(INDEX(Sheet1!D:D,MATCH(SMALL(Sheet1!AB:AB,ROW(A1)),Sheet1!AB:AB,0)),"")
という数式を入れ、A2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピー!

これでも方法(1)と同じ結果になると思います。m(_ _)m
「関数で、名簿順で入力すると同時に別シート」の回答画像4
    • good
    • 0
この回答へのお礼

できました、お礼が遅れて申し訳ありません。またよろしくお願いします。

お礼日時:2015/01/31 16:15

No.1・4です。



投稿後気づきました。
前回の「方法(2)」の場合、Sheet2のA2セル数式はもう少し簡単になります。

=IF(B2="","",INDEX(Sheet1!D:D,MATCH(ROW(A1),Sheet1!AB:AB,0)))
に変更してみてください。

※ Sheet1の作業列ABセルが目障りであれば
非表示にしておいてください。m(_ _)m
    • good
    • 0
この回答へのお礼

色々とお世話になりました。

お礼日時:2015/01/31 16:16

添付図参照


Sheet1!D2: =B2-ROW()/1048576
此れを下方にズズーッとドラッグ&ペースト
Sheet2!D2: =IF(Sheet1!$A2="","",LARGE(Sheet1!D:D,ROW(A1)))
此れを下方にズズーッとドラッグ&ペースト
Sheet2!A2: =IF($D2="","",INDEX(Sheet1!A:A,MATCH($D2,Sheet1!$D:$D,0)))
此れを右(B2)にドラッグ&ペースト
Sheet2!A2:B2 を下方にズズーッとドラッグ&ペースト
「関数で、名簿順で入力すると同時に別シート」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2015/01/31 16:14

別案ですが、ピボットテーブルは如何でしょうか。


挿入=>ピボットテーブル=>新規シートでOK
行に指名、集計に点数、合計結果を表示させます。
次に、点数のセルをクリックして 並び替え=>降順
にすれば成績順位に並びます。
必要に応じて、総計や空白を非表示にしてしまえば
ご希望のシートになります。
データを追加入力、或いは 編集したあとであれば
ピボットテーブルの更新を実行すれば
常に新しいデータに対応します。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2015/01/31 16:14

こんばんは!


Excel2007以降のバージョンをお使いだとしての一例です。

↓の画像でSheet2のB2セルに
=IFERROR(LARGE(Sheet1!B:B,ROW(A1)),"")
A2セルに
=IF(B2="","",INDEX(Sheet1!A$1:A$100,SMALL(IF(Sheet1!B$1:B$100=B2,ROW(A$1:A$100)),COUNTIF(B$2:B2,B2))))
A2セルは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → Sheet2のA2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

最後にA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピー!
これで画像のような感じになります。m(_ _)m
「関数で、名簿順で入力すると同時に別シート」の回答画像1

この回答への補足

tom04様すみません、最初でしっかり言っておくべきでした。他の列にデーターがあり合計のところのみで質問してしまっていて申し訳ありません。B列からAF列にデーターがあります。行としは40行のデーターになります。その時に関数をどのように修正すればよいのか初心者でして上記の関数を見ても修正の仕方がよく分かりませんので、お教え頂ければ幸いです。勝手を言いますがよろしくお願い致します。
さらに、詳細は
質問したときのAの氏名が
   D列にあります
質問したときのBの点数が
   AA列(合計点数)にあります

補足日時:2015/01/18 18:49
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2015/01/31 16:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!