[[20040203153601]] 『抽出について』(かき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『抽出について』(かき)

 下記のような表があった場合 D列に 1〜3位までの人の名前を、E列に同じく点数を
 自動的に抽出したいと思っていますが、D1・D2・D3,E1・E2・E3には
 どのような関数を入れたら良いでしょうか。

     A   B   C   D    E
 1 Aさん 20点  1位  名前  点数
 2 Bさん 30点  2位  名前  点数
 3 Cさん 40点  2位  名前  点数
 4 Dさん 5点
 5 Eさん 100点
 6 Fさん 12点

 取りあえず、同点がないものとして、ですが。
D1に=INDEX($A$1:$A$6,MATCH(LARGE($B$1:$B$6,ROW()),$B$1:$B$6,0),1)
でD3までコピー
E1に=VLOOKUP(D1,$A$1:$B$6,2,FALSE)としてE3までコピーします。
書き忘れましたが、B列は数値のみ入力して表示形式を「0点」として下さい。
同点の場合もお考えですか?(ケン)

そうですね よく考えたら同点もありますね。
その場合はどうしたら良いでしょうか。

D列・E列にはこだわりませんので上位3位(同点含む)を抽出し
A・B列以外に表示できれば結構です。


 作業列&条件付き書式を使用する方法です。

 F列を作業列に使用します。
 ・F1に =COUNTIF($B$1:B1,B1)+RANK(B1,$B$1:$B$6)-1     としてF6までコピー
 作業列のF列は非表示にするなどしてください。
 ・D1に =INDEX($A$1:$A$6,MATCH(ROW(D1),$F$1:$F$6,0))  としてD6までコピー
 ・E1に =INDEX($B$1:$B$6,MATCH(D1,$A$1:$A$6,0))       としてE6までコピー
 ・C1に =RANK(E1,$E$1:$E$6)                           としてC6までコピー
 条件付き書式の設定です。
 ・C1〜E6を選択して、「書式」−「条件付き書式」を選択
 ・条件を下記のように設定し、書式でフォント色を白に設定
  [数式が] [=$C1>3]

 (Yosh!)

6人の例えで上記のアドバイスを戴きましたが、

 30人の場合は (Yosh!)さんの関数の中の 「6」 のところを単純に
 「30」 に変更すれば良いのでしょうか

 それで出来ると思いますよ。(Yosh!)

 衝突しました。
 考えているうちにYosh!さんが、有難う御座います。
未検証ですがYosh!さんの式は範囲だけ変えればいいように思います。

 私の考えた結論は、D1に
=INDIRECT(ADDRESS(SMALL(IF($B$1:$B$6=LARGE($B$1:$B$6,ROW()),ROW($B$1:$B$6)),IF(COUNTIF($B$1:$B$6,LARGE($B$1:$B$6,ROW()))=1,1,ROW())),1))
としてCtrl+Shift+Enterで確定します。配列数式です。式が{}で囲まれればOKです。
その後D3までコピーします。E列は同じです。(ケン)

 (Yosh!)さんのアドバイスのものは C・D・E列に #N/A がいっぱい出てきました・・。
 (ケン)さんのアドバイスのものは #value! がいっぱい出てきました・・・。

 なぜでしょう・・・

 衝突しました。
 あ〜だめだ〜!検証不足です。もう少し考えよっと
#VAIUE!は配列式になっていないからだと思います。数式が{}で囲まれていますか?
(ケン)

 #N/Aの件ですが、F列も6を30になおした式を30行目までコピーしていますか?(Yosh!)

 {}でかこまれてませんでした。 

 囲ったらできました。 

 Yosh!さん ケンさん ありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.