• ベストアンサー

エクセルの質問です

画像にあるような表があるとします。 評価1の人物だけを抽出欄にA君、D君、E君、F君と順に表示させたいのです。 どうすれば良いのでしょうか? 識者の方、何卒、お助け下さい。 宜しくお願い致します。

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

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

簡単で分かり易く計算に負担のかからない方法は作業列を使う方法です。 C2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2=1,MAX(C$1:C1)+1,"") D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(C:C),"",INDEX(A:A,MATCH(ROW(A1),C:C,0)))

noname#164342
質問者

お礼

お忙しい中、ご回答頂きまして誠に有難うございます。 実は質問に使った表は説明を分かり易くするために、実際に使う表とは違うものを使いました。 実際の表は行数が450行、列数が30列あり、数式も質問のもの以外に7000程入っており、しかもB列の数値が時間経過によって変わっていくというものですので、記述が複雑なものは、処理に結構なタイムラグが出るということが判明しました。 KURUMITO様のご回答は答えを得るまで二段階の作業となっていますが、記述がシンプルなので動作が軽くて良かったです。

その他の回答 (5)

noname#204879
noname#204879
回答No.6

[フィルタオプションの設定]を使えば、貴方にとって苦手な(?)関数を全く使わなくて済みます。添付図参照。 セル A1、B1 をそれぞれセル D1、C1 にコピー&ペーストし、セル C2 に 1 を入力した後に、[データ]→[フィルタ]→[フィルタオプションの設定]を実行するだけ。

noname#164342
質問者

お礼

お忙しい中、ご回答頂きまして誠に有難うございます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

一例です。 D2に=IF(COUNTIF(B$2:B$7,1)>=ROW(A1),INDEX(A$1:A$7,SMALL(IF(B$2:B$7=1,ROW(A$2:A$7),999),ROW(A1))),"")、入力完了時にshift+ctrl+enterキーを同時押下後、下方向にコピー

noname#164342
質問者

お礼

お忙しい中、ご回答頂きまして誠に有難うございます。 実は質問に使った表は説明を分かり易くするために、実際に使う表とは違うものを使いました。 実際の表は行数が450行、列数が30列あり、数式も質問のもの以外に7000程入っており、しかもB列の数値が時間経過によって変わっていくというものですので、記述が複雑なものは、処理に結構なタイムラグが出るということが判明しました。 こんなことなら、初めからもっと詳しく書けば良かったかも、、、m(__)m 今回は他の方の数式を使わせて頂く事に致しましたが、行数等が少なくて済むときはmu2011様のものも使わせて頂きたいと思います。 回答者の皆様の有能ぶりに感服しております。 とても参考になりました。

noname#142920
noname#142920
回答No.3

こんにちは。30代既婚女性です。 単純に私ならD2に =IF(B2=1,A2,"") で出すかな…。 「抽出」とあるということは、氏名の横に出るだけではだめなのかしら? (空欄は上につめて、ならこれではダメですが…。)

noname#164342
質問者

お礼

お忙しい中、ご回答頂きまして誠に有難うございます。 また何かございましたら宜しくお願い致します。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 D2セルに次の数式を入力してから、D2セルをコピーして、D3以下に貼り付けると良いと思います。 =IF(ROWS($2:2)>COUNTIF($B:$B,1),"",INDEX($A:$A,SUMPRODUCT(ROW($B$1:$B$7)*($B$1:$B$7=1)*(COUNTIF(OFFSET($B$1,,,ROW($B$1:$B$7)-ROW($B$1)+1),1)=ROWS($2:2)))))

noname#164342
質問者

お礼

お忙しい中、ご回答頂きまして誠に有難うございます。 実は質問に使った表は説明を分かり易くするために、実際に使う表とは違うものを使いました。 実際の表は行数が450行、列数が30列あり、数式も質問のもの以外に7000程入っており、しかもB列の数値が時間経過によって変わっていくというものですので、記述が複雑なものは、処理に結構なタイムラグが出るということが判明しました。 こんなことなら、初めからもっと詳しく書けば良かったかも、、、m(__)m 今回は他の方の数式を使わせて頂く事に致しましたが、行数等が少なくて済むときはkagakusuki様のものも使わせて頂きたいと思います。 回答者の皆様の有能ぶりに感服しております。 とても参考になりました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

A1セルに「対象者番号」と記入 B列に名前以下を記入 C列に評価以下を記入 A2に =IF(C2=1,COUNTIF($C$2:C2,C2),"") を記入,以下コピー。 E1に「対象者番号」と記入 F1に「対象者氏名」と記入 E2に =IF(ROW(E1)>MAX(A:A),"",ROW(E1)) 以下コピー F2に =IF(E2="","",VLOOKUP(E2,A:C,2)) 以下コピー。

noname#164342
質問者

お礼

お忙しい中、ご回答頂きまして誠に有難うございます。 とても参考になりました。 また、何かございましたら宜しくお願い致します。