• ベストアンサー

教えてください。

教えてください。 列も行も多いデータの中から、最小の数値の表示されている人の氏名を表したいのですが VLOOKUP,MATCH,SMALL関数を使ってできるのでしょうか?ためしてみましたが、エラーになります。それともほかの関数がいいのでしょうか?     A B C D・・・・・・・・・・ 氏名 ------        =VLOOKUP 氏名 ------ 氏名 ------      -----の範囲です。 この表ではわかりにくいかと思いますが、よろしくおねがいします。 できれば、詳しくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

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

noname#116564
質問者

お礼

ありがとうございます。 苦肉の策をしぼりだしてくださるほど、考えていただいたことに感謝します。 できました。が、充分にその内容が理解しきれないレベルの私なので、もっと勉強しなければと 痛感しています。いい機会となりました。 ほんとうに、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

>実際には、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)))

noname#116564
質問者

お礼

私のレベルにも理解しやすい回答をいただきありがとうございます。 早速ためして、できました。感激です。 もっと勉強して、レベルアップしたいと思います。 ほんとうにありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

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))))

noname#116564
質問者

お礼

丁寧な回答ありがとうございました。できました。 もっと勉強して、この関数の組み合わせが理解できるようになりたいと思います。 まずは、できたので、よかったです。 ほんとうにありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

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))) で消える。

noname#116564
質問者

補足

詳しい説明ありがとうございます。 説明不足で申し訳ありません。 データの範囲はA1:EZ21 です。その範囲のなかの数値の少ない順にひろいだして、その数値が誰の数値かを、出したいのです。小さい順に名前を並べたいのです。 私には、レベルが高すぎて、回答を理解するが困難です。 できれば、簡単によろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 外していたらごめんなさい。 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

noname#116564
質問者

補足

TOM04さん、詳しい回答ありがとうございます。 説明不足ですみません。 TOMさんの表を使わせてもらって説明するとこういうことです。 B2:F10 のデータの中から小さい順(SMALL)にひろいだして、その数値が誰の数値になるかを だしたいのです。結局は、氏名を出したいのです。 でも、とても参考になりました。もし、よかったら、ぜひ回答引き続きお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>列も行も多いデータの中から、最小の数値の表示されている人の氏名を表したいのですが 具体的にどの範囲に入力されている数値の最小値を検索するのでしょうか? また、表の右に書いてある「=VLOOKUP」は何を意味しているのでしょうか? もう少し回答者にわかりやすく、数値データと氏名を例示して、どのような名前を抽出したいのか具体例で補足説明してください。、

noname#116564
質問者

補足

      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)
回答No.1

min関数あるいは並べ替えでabcdを各々探してみては。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【エクセル】 行番号を変数とする方法について

    下表のようなデータがあったとします。 A B C D 1 2 TEST 3 4 5 合計 100 6 <目的>ある文字列が含まれる行番号以下の範囲を指定して、VLOOKUP関数を使用。       ある文字列が含まれるセル行番号は、毎回異なる。 <具体例> 1) MATCH関数で、「TEST」という文字が含まれる行番号を取得     この場合「2」 2) VLOOKUP関数で VLOOKUP("合計",A2:D5,2false) というように   MATCH関数で得た行番号を他の関数に組み込みたいです。     どなたか、良い方法を教えて頂けないでしょうか? よろしくお願い致します。

  • エクセルの検索について教えてください

    エクセルでデータから、最小値を検索し、さらにその値からまた検索したい のですが、VLOOKUP,HLOOKUP,等使ってエラーがでてしまい、 ネットで調べて見よう見まねでINDEX,MATCH関数を使ってみたのですが、 エラーがでてしまいました どなたかわかる方どうか教えてください よろしくお願いします データの中身はこうなっています↓ 2行目には区分が、B列には名前がはいっていて データはB2からY12まではいっています Z列に、それぞれの列の最小値を検索して、さらにその値が どの区分なのかを表示させたいのですが、,, 無理でしょうか,,,      B列  C列  D列  E列    Y列     Z列 2行目 区分  1区分,2区分,10区分、、、5区分    3行目 りんご  3  、 15 、 20 、、、10     1区分 4行目 みかん 15  、 10 、 5  、、、12    10区分       ・       ・       ・ 12行目 その他 2  、  3 、 6 、、、、10    1区分 

  • VLOOKUP関数:別シートにある参照範囲が変動する場合

    スポーツクラブで学童会員の名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、データが入力されているのは  2行目からです。 ・別シートのデータを参照するため、シート2のデータが入力されて  いる範囲に「参照範囲1」という範囲名をつけました。 【状況】 現在設定している数式は B2=VLOOKUP(A2,参照範囲1,2,FALSE) なのですが、以下の場合は「参照範囲1」で設定した範囲とは 異なる範囲のデータを参照しなければなりません。 ・入会者がいる場合:データを追加するため、行が増える ・退会者がいる場合:データを削除しブランクを解消するため、  行が減る 【質問】 上記状況の場合、VLOOKUP関数に加えてどのような関数を使用すれば 別シートにある参照範囲の変動に対応できるのでしょうか? 会員が増減するたびに、新たに参照範囲を設定し範囲名をつけ直す という作業は避けたいのですが・・・ ご教示いただけますよう、何卒宜しくお願い申し上げます。

  • Vlookup関数で検索結果がエラーになってしまう

    お世話になります。 Vlookup関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • (エクセル)表から1列の別表をつくりたい。

    表に入力されたものを1列に並び替えをしたいのです。(エクセル関数) エクセルの表から、セルに入力された情報を抜き出し、並び替えたいのですが、行き詰ってしまい質問させていただきます。 (やりたいこと) 添付資料のように、事業所ごとに購入した物品が日付ごとに入力されていきます。この表を一列で並び替えることを したいのですが、現状の表の形で1列に抜き出すやり方が思い浮かびません。ひとつずつリンクを設定していけばいいですが、 それですと、空白のセルができてしまうこともあり、空白を消すためにフィルタをやらなくてはいけず、なんとか関数でどうにかできないと質問させていただきました(つまり空白のセルは飛ばし、隙間のない1列の表に変換したいです)。 (試したこと) (1)vlookup関数を使うために、日付の横に検索列を作ってもみましたが、同じ行に複数の抜き出すべくものがあると、 if関数のネストをいれるにも「if(c5="","",vlookup(v5,b5:r10,2,fasle)」みたくやってみましたが、c5までは取り出せても、 d5,e5,f5・・・と右にずらしていく関数式が思い当たりません。 (2)種類、数量データ入力されている全てのセルの横に(1.2.3.4.5.6.7.8.9.・・・)と数字をいれて検索列をつくり、vlookupとmatch関数の 組み合わせも試しましたが、vlookup関数の性質上、複数列に検索値(「vlookup(検索値,範囲,列番号,検索の型)」)が存在しているとこれも出来ず。 説明が不十分な点もあると思いますが、よろしくお願いいたします。もし、VBAでなければ難しいとのことでしたら、どのようなVBAを組めばいいかもお願いいたします。

  • 表引きの関数で困っています

    よろしくお願いします VLOOKUP関数ですが うまく表引きできません  2列の表でA列B列にデーターをいれた表があります D1には 式 =vlookup(D1,A1:B10,2,false))です D1にA1からB101での表を参照して 数値を引っ張っています いつもはうまくいきますが A1が 通し番号の場合はOKで ランダムな数値になりますと 引っ張れません 同じ数値が複数あると 最初のものだけ ひろいます 通し番号でなくて ランダムな数値でも 引っ張るにはどんな関数なんでしょうか サルにもわかるように やさしく 教えてください  

  • ある数値が何個目にあるか調べる関数ありますでしょうか?

    タイトルにありますとおり ある数値が何個目にあるか調べる方法 または関数がないか悩んでおります^^; 文章だけではわかりにくいので以下に例を示します。   A B C D  1 2 2 0 3 1 4 8 5 2 6 9 7 5 8 3   このような表があったとします。 A列に適当な数字が並んでいます。 A列で3が何個目にあるか?という場合は MATCH関数でMATCH(3,A1:A8)で8と表示されると思います。 調べたい数値が1個だけしか存在しない場合はいいのですが 複数ある場合、MATCH関数だとうまくいきません。 例えば、A列の2を調べる場合は1行目と5行目にあるため使えません。 このような場合、使えそうな関数、またはMATCH関数でも便利な活用方法など ご存知の方いらっしゃいましたら、ご教示いただけませんでしょうか^^;

  • 入力がないのにユーザー定義で定義した文字列が常に表示されてしまう。

    入力がないのにユーザー定義で定義した文字列が常に表示されてしまう。 VLOOKUP関数とIF関数を組み合わせて「=IF(A1="","",VLOOKUP(A1,D2:C5,2,FALSE))」という関数を入力しています。 念のため申し上げますと、 VLOOKUP関数で「D2:C5」の表からデータを検索し、そのデータに該当した行の指定列からデータを取り出しているわけです。 IF関数は、「#N/A」エラーを表示させたくないためです。 この計算式を入力しているセルの書式設定を、ユーザー定義で、「"○""○""○""○""○""○""○"@」としたのですが、 A1セルに入力が無く入力の無いはずのセルに「○○○○○」が常に表示されてしまいます。 どこが間違っているのでしょうか? お知恵を拝借させてください。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • エクセル VlookUPで違う結果が出てくる

    エクセル2010で何度も使っているVlookUP関数なのでですが、今日は何故か全くうまく行かず、原因が分かりません。 氏名が入った表同士で、Sheet1の氏名の横の列にSheet2の参照範囲からデータを持ってくるだけの作業なのですが、全く違う人(場所)のデータをもっともらしく引っ張ってくるのですが。 横にコピーすると、その違う人の横のセルのデータを持ってきます。 詰まり参照は出来ているのですが、全く違う「氏名」の行のデータを参照しているのですが。 この原因分かる方、是非お願いします。

ファイルが開けない
このQ&Aのポイント
  • PC-A2377CAWで写真ファイルが開けない問題について相談があります。
  • 無線LAN接続で「.jpgクラスが登録されていません」と表示されており、写真ファイルが開けません。
  • NEC 121wareのソフトウェアに関するお問い合わせです。
回答を見る

専門家に質問してみよう