• ベストアンサー

データを検索し関連セルのデータを表示

エクセル2002を使っています。 画像の様なデータシートがあります。 紫の部分 Q14に 機器A と入力された場合に AR列の機器Aを下から5つ検索し、その関連データを水色の部分に表示させたいと思います。 画像で言えばオレンジの部分のデータを水色の部分に表示させたいです。 (水色の部分は求めたい答えを回答者の方に解りやすく表示させたもので、もともとは空白です) 繰り返しますが、機器Aが5つ以上有った場合下から5つを抜き出します。 この場合、どういった関数を使えばよいでしょうか? よろしくお願いいたします。

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

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

No.2・3です。 補足の件ですが・・・ 単に作用列のセル番地の参照先を変えるだけです。 例えばO14セルに検索したいデータがある場合は 前回の数式の $Q$14の部分の「Q」を「O」に変更するだけです。 結果を表示させたいセルに入れる数式はそのままでOKです。 ただし、 >=IF(COUNT($AX:$AX)<6-ROW(A1),"",INDEX(AV:AV,LARGE($AX:$AX,6-ROW(A1)))) のAXはAX列が作業列の場合の数式ですので、実際の作業列の列番号に合わせてください。 次に >また、Q79に入力した場合と2パターン教えていただけませんか? に関してですが、Q79とは検索データをQ79に入れるというコトですか? それとも結果を表示させたいセルに入れる数式でしょうか? 仮に検索データをQ79に入れるのであれば、作業列の数式の >$Q$14を >$Q$79 とするだけです。 もし、結果を表示させたいセルがQ79以降であれば 結果表示の数式はそのままでOKです。 ※ 一つ気になるのが、 >ちなみに、同時にQ14,O14、M14.....とたくさん入力されます の部分です。 これは検索データが複数あり、一つの表からそれぞれを表示させたい!という意味でしょうか? もしそうであれば表示させたいデータ分だけ作業列を設ける必要があります。 同一Sheetで作業列が目障りであれば、 別Sheetに作業列を設けてそれを参照させた方が良いと思います。 操作方法はまったく一緒ですので、チャレンジしてみてください。 数式は同じなので、参照先が変わるだけです。 とりあえず今回はこの程度で・・・m(_ _)m

gekikaraou
質問者

お礼

ご回答ありがとうございます。 AX列は先ほどのデータがあったので、次の列AYに作業列を設けやってみました。 AY1 =IF(AR1=$O$14,ROW(),"") N37に =IF(COUNT($AY:$AY)<6-ROW(A1),"",INDEX(AV:AV,LARGE($AY:$AY,6-ROW(A1)))) 残りはオートフィルで解決できました。 最後まで教えていただき大変ありがたく思います。 ありがとうございました!

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

回答No6です。 AX2セルへの入力の式が循環参照になるとのことですがこちらの試験ではそうはなりません。原因が分かりませんね。 ただ、式そのものが難しくなっています。お示しした式は多数の機器について同時にデータを表示させる場合にはよいのですが今回のケースでは機器Aだけのデータを表示させればよいわけですからお示しした式を必要としませんね。 次のようにしても十分対応できますね。 AX2セルには次の式を入力して下方にドラッグコピーします。 =IF(AR2="","",IF(AR2=$Q$14,MAX(AX$1:AX1)+1,"")) P37セルには次の式を入力してQ37セルまで横にドラッグコピーしたのちに41行目まで下方にもドラッグコピーします。 =IF(MAX($AX:$AX)<=5-ROW(A1),"",INDEX(AV:AV,MATCH(MAX($AX:$AX)-5+ROW(A1),$AX:$AX,0)))

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

前回のご質問はせっかく苦労して回答したにもかかわらず削除されてしまったことは残念です。 作業列を作って対応します。 データは2行目から下方に入力されているとして例えばAX2セルには次の式を入力して下方にドラッグコピーします。 =IF(AR2="","",IF(COUNTIF(AR$2:AR2,AR2)=1,ROUNDDOWN(MAX(AX$1:AX1),-3)+1000,ROUNDDOWN(INDEX(AX$1:AX1,MATCH(AR2,AR$1:AR1,0)),-3)+COUNTIF(AR$1:AR1,AR2))) その後に答えですがP37セルには次の式を入力してQ37セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(COUNTIF($AR:$AR,$Q$14)-6+ROW(A1)<0,"",IF(ISERROR(INDEX(AV:AV,MATCH(SMALL($AX:$AX,RANK(INDEX($AX:$AX,MATCH($Q$14,$AR:$AR,0)),$AX:$AX,1)+COUNTIF($AR:$AR,$Q$14)-6+ROW(A1)),$AX:$AX,0))),"",INDEX(AV:AV,MATCH(SMALL($AX:$AX,RANK(INDEX($AX:$AX,MATCH($Q$14,$AR:$AR,0)),$AX:$AX,1)+COUNTIF($AR:$AR,$Q$14)-6+ROW(A1)),$AX:$AX,0)))) なお、エラーが表示される場合には機器Aなどの文字がすべての入力されたセルで一致していない場合が考えられますので一度文字をコピーして他のセルに貼り付けるなどの操作が必要ですね。

gekikaraou
質問者

補足

ご回答ありがとうございます。 私の無知さゆえ、回答を誤解されては疑心暗鬼になり、正確な再質問をさせていただきました。 正常なご判断が出来る回答者の皆様にはお手数になり大変感謝しております。 ありがとうございます。 それでAX2セルに=IF(AR2="","",IF(COUNTIF(AR$2:AR2,AR2)=1,ROUNDDOWN(MAX(AX$1:AX1),-3)+1000,ROUNDDOWN(INDEX(AX$1:AX1,MATCH(AR2,AR$1:AR1,0)),-3)+COUNTIF(AR$1:AR1,AR2))) を入力してみましたが、循環参照をしているとのエラーが出て計算できません。 これはどういったことなのでしょうか? ちなみにQ37セルは他セルを参照していますが複雑な式ではなく、=セル番号 となっています。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

No1です =INDEX(AS:AS,LARGE(($AR:$AR=$Q$14)*ROW(AR:AR),6-ROW(1:1)),1) ↓ 修正 ↓ =INDEX(AV:AV,LARGE(($AR:$AR=$Q$14)*ROW(AR:AR),6-ROW(1:1)),1) データ列を読み違えていました

gekikaraou
質問者

補足

ご回答ありがとうございます。 やってみたのですが、同じく#NUM とエラーが出ます。

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

No.2です! 補足に >データは1行目からありますので、AX1に >=IF(AR13=$Q$14,ROW(),"") とありましたので・・・ 1行目からデータがある(AR1から「機器1」等)があるのであれば 作業列の数式はAX1セルに =IF(AR1=$Q$14,ROW(),"") とします。 AR列がP14セルと一致する行に行番号を表示させるためです。 P37セルに入れる数式はそのままでOKです。 これで大丈夫だと思います。m(_ _)m

gekikaraou
質問者

補足

ご回答ありがとうございます。 無事目的が果たせましたが、この関数の応用方法がわかりません。 今回はQ14に入力した数字のデータを表示させましたが、それがO14なら関数のどの部分を変えれば良いでしょうか? また、Q79に入力した場合と2パターン教えていただけませんか? ちなみに、同時にQ14,O14、M14.....とたくさん入力されます。

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

こんばんは! http://okwave.jp/qa/q7885322.html で回答した者です。 列配置が違っていますが、前回の数式の列合わせで大丈夫だと思いますが・・・ 画像では13行目からデータがあるように見えますので、 作業列AX13セルに =IF(AR13=$Q$14,ROW(),"") AX13セルのフィルハンドルでダブルクリック、またはオートフィルで下へコピー! P37セルに =IF(COUNT($AX:$AX)<6-ROW(A1),"",INDEX(AV:AV,LARGE($AX:$AX,6-ROW(A1)))) という数式を入れ、隣のQ37セルまでと5行分オートフィルでコピー! これで何とかご希望通りにならないでしょうか? ※ 結局、前回の数式をそのまま列合わせしただけです。 ただ、作業列を使いたくない場合はNo.1さんのように配列数式にする必要があります。m(_ _)m

gekikaraou
質問者

お礼

ご回答ありがとうございます。 無事目的が果たせましたが、この関数の応用方法がわかりません。 今回はQ14に入力した数字のデータを表示させましたが、それがO14なら関数のどの部分を変えれば良いでしょうか? また、Q79に入力した場合と2パターン教えていただけませんか? ちなみに、同時にQ14,O14、M14.....とたくさん入力されます。

gekikaraou
質問者

補足

ご回答ありがとうございます。 データは1行目からありますので、AX1に =IF(AR13=$Q$14,ROW(),"") を入力し最後尾までオートフィルしました。 P37セルに =IF(COUNT($AX:$AX)<6-ROW(A1),"",INDEX(AV:AV,LARGE($AX:$AX,6-ROW(A1)))) をいれ、隣のQ37にオートフィルしさらに5行オートフィルしました。 P,Qの37は空白、下4行はデータと、おそらくいい感じで抜き出してくれているようなんですが、データが違うのです。 どうも違う場所を抜き出してる感じです。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

P37セルに =INDEX(AS:AS,LARGE(($AR:$AR=$Q$14)*ROW(AR:AR),6-ROW(1:1)),1) 配列計算なので【Shift】+【Ctrl】+【Enter】で確定 Q41セルまでドラッグしてコピー

gekikaraou
質問者

補足

ありがとうございます、回答どおりP37に =INDEX(AS:AS,LARGE(($AR:$AR=$Q$14)*ROW(AR:AR),6-ROW(1:1)),1) を入力し コントロール+シフト+エンターキーで確定させたのですが#NUM とエラーが出てしまいます。 画像にはデータが13行からあるようにみえますが、実は1行目からあるんです。 これが原因でしょうか?

関連するQ&A

  • エクセル2010 同データの検索と関連セルの表示

    エクセル関数に詳しくないので教えて頂けませんか? 画像の様なデータシートがあります。 ■データの場所 U~AD列には、画像の様に10列、8行が一括りになった上書きされる貼り付けデータがあります。 ■任意に入力される場所 B4、D4、F4、H4、J4、L4、N4、P4には、検査機器などの名前が入ります。 ■やりたい事 それでB4~P4に名前が入るとY列からそれと同じものを検索し、 その関連データである行のデータを表示させたいと思います。 また試行回数は10回まで表示させ、10回を超える分のデータは無視していただいて構いませんが、Y列に同じ名称のものがなければひとつ古いデータから抜き出す形になります。 一応、誤解があってはなりませんので、 試行回数1回目の機器A, 機器B 試行回数2回目の機器Aには実際の場所をセル番号で示しました。 また、U~ADのデータは毎回貼り付けられるため、表示データもそれと同時に更新されるものが理想です。 ※ちなみにA2~S2セルは空白ですので、ここは使えます。 これを出来れば関数のみで実現したいと思います。 どなたか詳しいかた、具体的な関数などで教えて頂けませんでしょうか? よろしくお願いいたします。

  • データの空白行を除き別セルに表示

    excel2003のデータ整理に困っていますので助けてください。 A列はVlookup関数が貼り込んでありその戻り値で、 下記に空白とある部分は””が戻り値のセルです   A  B  C   1 山田    山田 2 空白    西本 3 西本    谷本 4 谷本    西 5 空白 6 空白 7 西 A列のデータをC列に上記のごとく、空白を除き表示したのですが オートフィルタ、並べ替えを使用せず、関数のみで処理する 方法を教えてください。  

  • エクセル2002で同じ文字を検索し、関連セルのデー

    こんばんは、エクセルにまだまだ詳しくないので教えていただけませんか? エクセル2002を使っています。 画像の様なシートがあります。 それで、、P14に機器Aと入力した時に、AS列にある機器Aのデータの下から5つを抜き出したいと思います。 これは機器Bとか機器Cとか毎回異なります。 例として、機器Aと入力した時は、P41に機器AのAVセルにあるデータ29をQ41にはAWセルにあるデータA29を。 上のP40にはデータ28、Q40にはデータA28をと言う風に読み出してくれればOKです。 もし機器Aのデータが4つしかなければP及びQセルの一番上は空白で結構です。 これをマクロではなく 関数で実現するにはどうしたらよいでしょうか? 詳しい方、よろしくお願いいたします・

  • あるセルにデータが入力された日を表示

    A列(A1)のセルにデータが入った場合、D列(D1)にそのセルに データが入力された日付を表示させたいのですが、どのように やったらいいでしょうか?TODAY関数を使うと毎回更新されて しまいます。 TEXT関数+TODAY関数で出来るかな?と思ったのですが、 =TODAY()を使うとセルに入力された日でなくて、ファイルを開いた 日付に毎回更新されてしまいます。 A列のセルにデータが入った時にD列にその入力日を表示させたい のです。こういう事は簡単に関数を使って出来ませんか?わかる方 がいれば教えてください。

  • 複数データを検索して同じデータは”有”と表示する

    B表に設定した4桁の数字データが複数あります。A表のA列に4桁の数字データが80個表示されています。A列を検索して、B表と同じ数字データがあった場合はA表のB列に”有”と表示する表を作成しようと考えています。 一つのデータと同じものを検索して表示することはVLOOK関数などでできるのですが、複数のデータと同じものを複数の中から検索して該当するものだけを”有”と表示する関数がよくわかりません。 困っています。ご教授下さい。

  • エクセル2002で同じ値を探し、関連セルを表示

    エクセル2002を使っています。 画像の様にA列に500件ほどの名簿があります。 E列に他からのデータを貼り付けた場合に、同じ名前を探しその関連データを表示させたいと思います。 詳しい方、よろしくお願いいたします。

  • セル内のデータが空白の場合、その行は印刷しない

    エクセルデータで1000行、列項目が10項目ある表を作りましたが、データのない項目があるので印刷時にデータのない行は印刷しない方法を教えてください。 ただし、AとB列は品名と品名コードが常に表示されます。 データとして在庫数、重量、単価の項目があり金額は重量×単価の計算式があります。 ※在庫数、重量、単価が空白の場合はその行は空白行とみなし印刷しないようにする。  また、プレビューで見た場合も空白行は詰めて表示されること ※在庫数、重量、単価のセル内には関数が登録されておりデータが0の場合は空白となるように 設定してあります。  サンプル画像を添付しますのでよろしくお願いします。

  • 検索値のセルと同じセルを探す方法は。

    検索値のセルと同じセルを探す方法は。 Excel 2003を利用しています。 以下のようなことをしたいですが、どのような関数でしたら良いでしょうか。 A列  B列  C列 有  東京  東京 有  東京  千葉    埼玉        埼玉 有  千葉 有  千葉 検索値がC列で、同じ内容のセルをB列から探し、 同じセルがあった場合、結果をA列に「有」と表示させたいのです。 実際のB、C列は何百行とあります。 無い場合は空白にしておきたいのですが、 このような関数はあるでしょうか? どうぞよろしくお願いします。

  • エクセルで各セルそれぞれ四捨五入してからの合計を求めたいのです

    エクセル2000です。 ワークシート関数でこんな場合どうすればよいでしょうか? 添付画像のようにA列に数値データがあります。 途中に空白(数式で ="" が表示されています。)のセルもあります。 このA列のデータを各セルそれぞれ四捨五入してからの合計を求めたいのです。 画像ではB列を作業列にして、 =IF(ISNUMBER(A2),ROUND(A2,0),0) と、="" への対応をして ROUNDして合計していますが、作業列を使わなくとも良い方法があればと思い質問いたしました。 途中の空白が、数式による ="" では無くほんとの空白であれば、 =SUMPRODUCT((ISNUMBER(A2:A11))*ROUND(A2:A11,0)) で、一発で求められるのですが・・・・・。 ご教示いただければ幸いです。 宜しくお願いいたします。

  • エクセル 文字が表示されたセルを抽出したい

    エクセルの関数を教えて下さい。    A     B     C     D   1 りんご              りんご 2       プリン        プリン 3             紅茶   紅茶 4 バナナ              バナナ 5      6             緑茶   緑茶 上記のような表があります。(A~は列、1~は行番号です) A1~C6までは、IF関数で、条件にあった場合に“りんご”などを表示、そうでない場合には空白と なるような式が入っています。 そして、D列のように、それぞれの行に表示されている文字を抽出、何も表示されていない場合は空白としたいのです。 D列にはどういった式を入れればよいかを教えて下さい。 ※各行に表示されるのは1つのセルのみで、例えばA1のセルとC1のセルに文字が表示される ことはありません。A1に文字が表示されている場合は、必ずB1・C1のセルは空白です。 宜しくお願い致します。

専門家に質問してみよう