• 締切済み

エクセル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セルの一番上は空白で結構です。 これをマクロではなく 関数で実現するにはどうしたらよいでしょうか? 詳しい方、よろしくお願いいたします・

みんなの回答

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

お示しの図ではQ14セルに機器Aが入力されていますが本文ではP14となっていますので本文にしたがってお答えします。 なお、機器AのデータがたまたまAS列の機器Aの行に一致していますが、そのようなことではなくP14セルの指定にしたがってP37からQ41セルにAUおよびAWセルのでデータを表示させたいとのことですね。 それでしたらP37セルには次の式を入力してQ37セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($P$14="","",IF(INDEX($AS:$AS,MATCH($P$14,$AS:$AS,0)+COUNTIF($AS:$AS,$P$14)-6+ROW(A1))<>$P$14,"",INDEX(AV:AV,MATCH($P$14,$AS:$AS,0)+COUNTIF($AS:$AS,$P$14)-6+ROW(A1)))) これで5つのデータが無い場合でも対応できます。 なお、機器Aや機器B などの文字の場合にはローマ字が半角の英数モードになっているか全角モードになっているかでエラーになることが有りますので必ず同じ文字となるようにしてください。

gekikaraou
質問者

お礼

ご回答頂きありがとうございます。 こちらの伝達ミスで誤解を招いてしまった様ですので、新たに質問をさせて頂きました。 よろしければ、そちらを見ていただけるようお願いします。 http://oshiete.goo.ne.jp/qa/7886827.html

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

> P14に機器Aと入力した時に、AS列にある機器Aのデータの下から5つを抜き出したい > 機器Aのデータが4つしかなければP及びQセルの一番上は空白で結構です。 例えば、その「下から5つ」が「数千行目」に表示されるだけで良いのでしょうか。 質問文・図からは、そうとしか読み取れないもので。 だとしたら、例えば41行目なら   P41セル:=IF(COUNTIF(P41:$P$最下行,"*?")>=5,"",IF($P$14=AS41,AV41,""))   Q41セル:=IF(P41="","",AW41) などとして、必要分コピー(フィル)。 ただし、データ最下行までこれを入れてしまうと循環参照されてしまうので、 最下行だけは   =IF($P$14=AS41,AT41,"") これだけで。 まぁ、1番さんの回答が核心なんだろうなぁ、と思いつつ。

gekikaraou
質問者

お礼

ご回答頂きありがとうございます。 こちらの伝達ミスで誤解を招いてしまった様ですので、新たに質問をさせて頂きました。 よろしければ、そちらを見ていただけるようお願いします。 http://oshiete.goo.ne.jp/qa/7886827.html

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

No.1です! たびたびごめんなさい。 投稿後、よく画像を見てみると 38行目以降に表示するのですね! そして前回の >・・・隣のR15セルまでコピー・・・ は入力ミスです。 もう一度整理します。 作業列の数式はデータが入っている最初の行(タイトル行は除く)に入力し オートフィルで下へコピー! 仮にデータが13行目からあるとすると =IF(AS13=$Q$14,ROW(),"") という数式になります。 (検索項目のQ14セルは絶対参照です。) 次に38行目以降に表示したいというコトですので、 P38セルに =IF(COUNT($AX:$AX)<6-ROW(A1),"",INDEX(AV:AV,LARGE($AX:$AX,6-ROW(A1)))) という数式を入れ隣のQ38までと5行分下へオートフィルでコピーです! 何度も失礼しました。m(_ _)m

gekikaraou
質問者

お礼

ご回答頂きありがとうございます。 こちらの伝達ミスで誤解を招いてしまった様ですので、新たに質問をさせて頂きました。 よろしければ、そちらを見ていただけるようお願いします。 http://oshiete.goo.ne.jp/qa/7886827.html

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

こんばんは! 一例です。 データは2行目以降にあるとして・・・ 作業用の列を設けます。 仮に作業列をAX列とすると AX2セルに =IF(AS2=$Q$14,ROW(),"") という数式を入れ、フィルハンドルでダブルクリック! (途中に空白がある場合はそこでオートフィルがストップしてしまいますので、最終行までオートフィルでコピー) P15セルに =IF(COUNT($AX:$AX)<6-ROW(A1),"",INDEX(AV:AV,LARGE($AX:$AX,6-ROW(A1)))) という数式を入れ隣のR15セルまでコピー! そのまま下へ5行オートフィルでコピーではどうでしょうか?m(_ _)m

関連するQ&A