- ベストアンサー
教えてください。
教えてください。 列も行も多いデータの中から、最小の数値の表示されている人の氏名を表したいのですが VLOOKUP,MATCH,SMALL関数を使ってできるのでしょうか?ためしてみましたが、エラーになります。それともほかの関数がいいのでしょうか? A B C D・・・・・・・・・・ 氏名 ------ =VLOOKUP 氏名 ------ 氏名 ------ -----の範囲です。 この表ではわかりにくいかと思いますが、よろしくおねがいします。 できれば、詳しくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.3です! 再びお邪魔します。 補足を読ませていただきました。 表内に数値の重複があるとかなり難しくなると思います(←今は考えが思い浮かびません)ので 苦肉の策としての方法です。 もう一度画像をアップさせていただきます。 ↓の画像でG2セルに =IF(COUNT($B$2:$E$10)<ROW(A1),"",SMALL($B$2:$E$10,ROW(A1))) H2セルに =IF(G2="","",INDEX($A$2:$A$10,SUMPRODUCT(($B$2:$E$10=G2)*ROW($A$1:$A$9)))) という数式を入れ、G2・H2セルを範囲指定し、H2セルのフィルハンドルで下へずぃ~~~!っとコピーします。 表内に重複数値がなければ問題なくすべて表示されると思いますが、 もし、重複があるとエラーになったり、全く別のデータが表示されると思います。 一つの案ですが、条件付書式で重複するものに色をつけています。 当方使用のExcel2003の場合ですが B2~E10セルを範囲指定 → メニュー → 書式 → 条件付書式 → 数式が を選択し、数式欄に =COUNTIF($B$2:$E$10,B2)>1 として書式からパターンの「赤」を選択 次にG列すべてを範囲指定 → 同様に条件付書式の「数式が」を選択し、数式欄に =COUNTIF($G:$G,G1>1) として同様にパターンで「赤」を選択しています。 これで同数値がある場合は注意を促す程度の色表示ができると思います。 この程度ですが 参考にならなかったらごめんなさいね。m(__)m
その他の回答 (6)
- MackyNo1
- ベストアンサー率53% (1521/2850)
>実際には、A1:EZ21までの数値データが範囲です。そのデータの中から、SMALL関数で最小の数値から順番に拾い出して、その数値が誰なのかを他の関数と組み合わせてだしたいのです。 上記の条件(正確にはA1セル以下に名前が入力されておりB1セルから数値データが入力されているなら、A26セルに以下の式を入力して下方向にオートフィルして、データ範囲内の数値を小さい順に表示しておきます。 =SMALL($B$1:$EZ$21,ROW(A1)) その横の名前を表示するB26セルには以下の式を入力し、Ctrl+Shift+Enterで確定して下方向にオートフィルします。 =INDEX(A:A,SMALL(IF($B$1:$EZ$21=A26,ROW($B$1:$EZ$21),""),COUNTIF($A$26:A26,A26)))
お礼
私のレベルにも理解しやすい回答をいただきありがとうございます。 早速ためして、できました。感激です。 もっと勉強して、レベルアップしたいと思います。 ほんとうにありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
A1セルからEZ21までのセルが対象ということですが1行目には新たな行の追加をしてください。 そこでFA2セルには次の式を入力してKZ2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR($A2="",B2=""),"",RANK(B2,$B$2:$EZ$22,1)+(COUNTIF($B$1:$EZ1,B2)+COUNTIF($B2:B2,B2))/1000) 次に小さな数の順に名前をということですがLB列にその数値を並べ、LC列にはその氏名を並べることにします。 LB2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>COUNT(B$2:EZ$22),"",INT(SMALL(FA$2:KZ$22,ROW(A1)))) LC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>COUNT(B$2:EZ$22),"",INDEX(A$1:A$22,SUMPRODUCT((FA$1:KZ$22=SMALL(FA$2:KZ$22,ROW(A1)))*ROW(B$1:B$22))))
お礼
丁寧な回答ありがとうございました。できました。 もっと勉強して、この関数の組み合わせが理解できるようになりたいと思います。 まずは、できたので、よかったです。 ほんとうにありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
imogasi方式(作業列を使う方法。Googleでimogasi方式で照会すれば、色んな場合の応用が出てくる。)でやると 一種の抜き出し問題で 例データ Sheet1に A1:D7 - x y z a 11 3 18 b 2 45 3 c 3 6 2 d 5 2 4 e 23 4 5 f 4 2 11 E2に =IF(NOT(ISERROR(MATCH(MIN($B$2:$D$100),$B2:$D2,0))),MAX($E$1:E1)+1,"") と入れて下方向に式を複写。最大100列までと仮定した式。 Sheet2で A2に =INDEX(Sheet1!$A$1:$A$100,MATCH(ROW()-1,Sheet1!$E$1:$E$100,0)) と入れて下方向に式を複写。 結果(A1以下A列に) b c d f #N/A この#N/Aは =IF(ROW()-1>MAX(Sheet1!$E$1:$E$100),"",INDEX(Sheet1!$A$1:$A$100,MATCH(ROW()-1,Sheet1!$E$1:$E$100,0))) で消える。
補足
詳しい説明ありがとうございます。 説明不足で申し訳ありません。 データの範囲はA1:EZ21 です。その範囲のなかの数値の少ない順にひろいだして、その数値が誰の数値かを、出したいのです。小さい順に名前を並べたいのです。 私には、レベルが高すぎて、回答を理解するが困難です。 できれば、簡単によろしくお願いします。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 A列の氏名の中で表内の最小値にあたる行の人を表示すれば良い訳ですかね? 一応そういうことだとして・・・ ↓の画像で説明させていただきます。 最小値が複数ある場合の方法です。 作業用の列を1列設けています。 まず、最小値を検索します。 H2セルに =MIN(B2:E10) として最小値を表示させます。 作業列F2セルに =IF(COUNTIF(B2:E2,$H$2),ROW(),"") という数式を入れ、フィルハンドルの(+)マークでダブルクリック、またはオートフィルで下へコピーします。 そして、結果表示列のI2セルに =IF(COUNT(F:F)<ROW(A1),"",INDEX(A:A,SMALL(F:F,ROW(A1)))) という数式を入れ、オートフィルで下へコピーすると 画像のように最小値のA列の氏名が表示されます。 尚、最小値が一つしかない!ということなら作業列も必要なく 表示したいセルに =INDEX(A1:A10,SUMPRODUCT((B1:E10=MIN(B1:E10))*ROW(A1:A10))) とすれば最小値の行の氏名だけが表示されます。 以上、長々と書きましたが 的外れならごめんなさいね。m(__)m
補足
TOM04さん、詳しい回答ありがとうございます。 説明不足ですみません。 TOMさんの表を使わせてもらって説明するとこういうことです。 B2:F10 のデータの中から小さい順(SMALL)にひろいだして、その数値が誰の数値になるかを だしたいのです。結局は、氏名を出したいのです。 でも、とても参考になりました。もし、よかったら、ぜひ回答引き続きお願いします。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>列も行も多いデータの中から、最小の数値の表示されている人の氏名を表したいのですが 具体的にどの範囲に入力されている数値の最小値を検索するのでしょうか? また、表の右に書いてある「=VLOOKUP」は何を意味しているのでしょうか? もう少し回答者にわかりやすく、数値データと氏名を例示して、どのような名前を抽出したいのか具体例で補足説明してください。、
補足
A B C D E F アさん 1 3 9 10 4 67 イさん 2 8 4 34 67 7 ウさん 9 11 12 9 23 6 実際には、A1:EZ21までの数値データが範囲です。そのデータの中から、SMALL関数で最小 の数値から順番に拾い出して、その数値が誰なのかを他の関数と組み合わせてだしたいのです。 数値の小さい順に名前を並べたいのです。横のVLOOKUPはその関数が使えるのでは?と 思って書いてありましたが、よけいだったようで、すみません。 こんな、説明でわかっていただけるでしょうか? もし、同じ数値があった場合は、最初のデータが優先されるのでしょうか?つづいて、同じ数値の次の人の名前がでるのでしょうか?こんな説明でもうしわけありません。 結局、名前を並べたいのです。よろしくお願いします。
- aokii
- ベストアンサー率23% (5210/22062)
min関数あるいは並べ替えでabcdを各々探してみては。
お礼
ありがとうございます。 苦肉の策をしぼりだしてくださるほど、考えていただいたことに感謝します。 できました。が、充分にその内容が理解しきれないレベルの私なので、もっと勉強しなければと 痛感しています。いい機会となりました。 ほんとうに、ありがとうございました。