• ベストアンサー

【Excel】 INDEX ,MATCH でいいのか。該当が複数ある場合

kaisendonの回答

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.2

オートフィルタに一票 (o‥o)/ なお、関数で > 該当が複数ある場合の出し方 は、いろいろあると思いますが一例です。 複数人の名前をどこに表示したらよいのか分かりませんので、 例えば全員が同点ならば、(全員が最高得点になるので) B32からB61までひとつのセルに一人ずつ表示させるようにしました(^^ゞ B31には =MAX(B1:B30) ←この式が入っているとします。 どこでもいいですが、仮にC列、D列を作業列にして、 C1に =IF(B1=$B$31,B1+ROW()*0.01,"")  (C30までフィルコピー) D1に =IF(COUNT($C$1:$C$30)<ROW(D1),"",SMALL($C$1:$C$30,ROW(D1))) (D30までフィルコピー) B32に =IF(D1="","",INDEX($A$1:$A$30,MATCH(SMALL($D$1:$D$30,ROW(B1)),$C$1:$C$30,0))) (B61までフィルコピー) これでご希望の結果が返るかと思います。 (但し、B列(得点の入力欄)に何も入力が無い場合は全員の名前が表示されます) ご覧のように、ご希望の事を関数でやるのは結構めんどいです(^^ゞ なので、やっぱり「オートフィルタ」をお勧めしますw 蛇足: > B32 にその最高点をとった人物が誰かを表示するのに > =INDEX($A$1:$A$30,MATCH($B$31,$B$1:$B$30),1) > と入力したら、 > 該当者が1人しかいない時は問題ないのですが、 ↑この式は、 =INDEX($A$1:$A$30,MATCH($B$31,$B$1:$B$30,0)) ↑こうした方がいいのではないかと(^^ゞ

uki123
質問者

お礼

ご回答ありがとうございます。 NO1の方への回答にも書きましたが、実際の作業は、人数が600名、項目が10項目以上になるため、あまり作業列を増やしたくないというのが本音です。それでも人数や項目が少ないときは使えそうなのでストックしておきます。 また、最高点該当者の出し方の関数もご指摘もありがとうございました。

関連するQ&A

  • INDEX MATCH HYPERLINK 

    こんにちは。 エクセル表で社員の勤怠を入力しています。 表はA1からL10までの範囲で、A1は空欄、B列は日付、C1からL1までは10/1から10/10までの日付が入力されています。A2はCODE、B2は氏名の列の項目名、C2からL10までは曜日が入力されています。A3から下にA10までの列はそれぞれ社員コードとなる数字が、B3から下にB10までは社員名が 入力されています。C3からL10までは特に何も入力されていない状態ですが、入力規則でリストから、項目を選ぶ形式です。また、C3からL10までは検索スペースという名前をつけてあります。入力作業の補助のために、N4のセルに日付を入力し、N7に社員コードを入力して、N12をクリックすると、表の該当の箇所にジャンプする関数を作成したいのですが、うまくいきません。 式は、=IF(ISERROR(HYPERLINK("#検索スペース"&INDEX($B$2:$L$10,MATCH(N4,$C$1:$L$1,0),MATCH(N7,$A$3:$A$10,0)),"検索")),"値を入力してください!",HYPERLINK("#検索スペース"&INDEX($B$2:$L$10,MATCH(N4,$C$1:$L$1,0),MATCH(N7,$A$3:$A$10,0)),"検索"))です。 N12をクリックすると「参照が正しくありません」とエラーメッセージが現れます。どこがおかしいのか、教えてくださえるかた、お願いします。 説明が悪いようでしたら補足いたしますので、ご質問ください。 よろしくお願いします。

  • INDEX,MATCH使用方法

    Sheet1           A       B     C          D          E 1    得意先コード入力     納品先候補:   納品先コード    納品先名 2    1001                         1           あああ 3                                2           いいい 4                                3           ううう 5                                4           えええ 6                                5           おおお 7                                1           かかか Sheet2     A          B          C 1   得意先コード   納品先コード   納品先名 2   1001        1          あああ 3   1001        2          いいい 4   1001        3          ううう 5   1001        4          えええ 6   1001        5          おおお 7   1002        1          かかか 8   1002        2          ききき 9   1002        3          くくく 10  1002        4          けけけ お世話になります。 Sheet1で得意先コードをA2に入力すれば、Sheet2から納品先候補を検索して表示するようにしたいのですが、現状ではSheet1のD2以下に下記のような関数を入れています。 D2:=INDEX(Sheet2!$B$2:$B$10,MATCH(Sheet1!$A$2,Sheet2!$A$2:$A$10,0)) D3:=INDEX(Sheet2!$B$2:$B$10,(MATCH(Sheet1!$A$2,Sheet2!$A$2:$A$10,0)+1)) 以下同様、E列も同じです。 これでも表示はされるのですが、ドラッグコピーが出来ない(+1,2…)ので手入力になるのとエラーや0を非表示にする為にさらにISERRORを組み込む事を考えますとかなりしんどい事になりそうですので、もっと良いやり方はないでしょうか。 さらに、入力した得意先コードの分のみの納品先候補表示が出来ればありがたいです。 宜しくお願い致します。

  • EXCEL2000で関数INDEXとMATCHを使った際の表示について

    EXCEL2000で関数INDEXとMATCHを使った際の表示について お聞きしたいのですが、別シートでリストが有りそのリスト内のリストNoを別シートで入力すると項目が自動表示される様に関数を入力したのですが、リストでは1行に2段表示にして作成しているのですが別シートに自動表示した際1行で表示されます。リストと同じ表示するにはどうすればよいのでしょうか、わかる方宜しくお願いします。 ちなみにわかりずらいかもしれませんが現在下記の様に表示されます。 現在の関数式 =INDEX(**リスト!$B$4:$B$50,MATCH(**データ!D2,**リスト!$A$4:$A$50,0)) 表示例 (リスト側)        (データ側)     A(列)           A(列)  1(行) あああ    1(行) あああいいいいい   いいいいいい 

  • INDEX・MATCH関数について

    エクセルでランキングを作成しています。 いくつかのエクセルファイルを参照し その中のデータをランキング化して表示させたいと思っています。 簡単に言うとテストの得点表みたいな感じです。  1位  太郎君(INDEX+MATCH) 95点(LARGE)  2位  一郎君(INDEX+MATCH) 85点(LARGE) ※()の中は使っている関数です 上記のような表示はLARGE関数とINDEX・MATCH関数で作成できたのですが 太郎君と一郎君の得点が同じ場合に名前の欄が同じ名前になってしまいます。 同じ数値のものがいくつかある場合に 名前の表示をすべてするにはどうすればいいでしょうか? 1位  太郎君  100点 2位  一郎君  100点 こんな感じで表示したいと思っています。 どなたかご教授お願いします。

  • INDEXとMATCH関数について。

    業務で使用しているファイルにINDEXとMATCHを組み合わせた関数を使っています。 =INDEX(Sheet4!E2:E999,MATCH(Sheet1!F17,Sheet4!A2:A999,0)+2,0) です。 教えて頂きたいことは、 ・上記の関数の説明(詳細)この関数はどういったしくみになっているのか。 ・セルが空白のときに#N/Aを表示させないこと。 ・完全一致型にしたいこと。 この3点を教えて頂けませんか?よろしくお願いします。

  • 関数MATCHを利用して、該当がある場合のみ数字を出したい

    お世話になります。 シートの中に重複データそれがどのデータと一致しているかセル番号を出す関数をつくりたいと調べています。 http://oshiete1.goo.ne.jp/qa2495843.html こちらで紹介のあったようにMATCHを使って、 たとえばA列に名前が入っていた場合、となりのB列に =MATCH(B2,B:B,0) といれてみました。 すると一致している場合は、その一致しているセルの行番号が出るのですが、一致するものがない場合は、そのB列の行番号が出ます。 これを、一致するものがある場合のみ、数字を表示する、としたいのですが、どのようにすればよいでしょうか。 イメージとしては もし B2と(MATCH(B2,B:B,0)の結果)が一緒なら空白にする もし B2と(MATCH(B2,B:B,0)の結果)が違ったら(MATCH(B2,B:B,0)の結果)を表示する といった感じです。 空白は、0と入力されてもいいです。 アドバイス、ご指導お願いいたします。

  • ExcelセルにVBAでINDEX関数を入力

    ExcelでINDEX関数とMATCH関数で"B11:E13"セルに以下の数式データがあります。 数式は "B11"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(1,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(1,B$15:B$23,0))) "B12"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(2,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(2,B$15:B$23,0))) "B13"=IF(ISERROR(INDEX($A$1:$A$9,MATCH(3,B$15:B$23,0))),"",INDEX($A$1:$A$9,MATCH(3,B$15:B$23,0))) "C11"==IF(ISERROR(INDEX($A$1:$A$9,MATCH(1,C$15:C$23,0))),"",INDEX($A$1:$A$9,MATCH(1,C$15:C$23,0))) "B15~B23"に数値1~3を入力した場合イニシャルA~I が入力される式ですが、列を連続で入力できるような処理をVBAのWorksheetFunctionで行うにはどのようにコードを記述すればよいのでしょうか。 ご回答のほどよろしくお願いします。

  • Excel VLOOKUPでは複数該当する場合

    以下のような表があるとします。    A    B     C 1      番号   氏名 2       1    青木 3  ○    2    井上 4       3    上田 5  ○    4    江口 6  ○    5    太田 関数を使って、○が付いている人の氏名を表示させたいと考えています。 ○が付いている人が一人しかいないならば、=VLOOKUP("○",A2$C6,3,FALSE) でよいですが、複数名が該当する場合には使えません。 上表のように、複数が該当する場合において、例えば、○が付いている中で、「番号」が2番めに若い者の「氏名」を、関数で表示させる方法があればご教授願います。

  • match関数とindex関数について

    index関数を次のように用いて、match関数で位置を取りだすことをしたいと考えています。 =index(0/$A$1:A20="休",0) matchは以下の上式を使って、以下のようにします。 =match(1,index(0/$A$1:A20="休",0)) この時、index内において、「休」だけでなく、「祝」も判定したいと考えた場合、上手い式の組み方は考えられるでしょうか。 ご教授願います。

  • MATCH関数について。

    いま、情報処理検定2級の勉強をしています。 そこでINDEX関数を用いる問題が出たので、INDEXとMATCHのネストを作りました。 =INDEX($C$20:$F$24,MATCH(G5,$C$19:$F$19,0),MATCH(H5,$B$20:$B$24,0)) こんな感じになりました。 でも、エラーが起きました。MATCH(H5,$B$20:$B$24,0))のところのセルH5には「1」とあり、B20:B24には「1回目」~「5回目」とセルに入力してありました。なので、一致しないからだと思いました。 そこで質問です。このような場合、どのようにすればエラーが起きないで戻り値が出るのでしょうか。 わかりにくい文章ですけど、教えてください。