• 締切済み

エクセル抽出関数の使い方、教えてください!!

大変恐れ入ります。過去の他の方の質問を一部引用しております。 <引用:2009/11/05 QNo.5425095> ---引用--- excel関数を用いてある行の範囲内の数値のみを違う行に抽出し、同じ列に対応する値も引っ張ってくることは可能ですか?     A   B   C   D 1   33   180 2   58   300 3   89   310 4   152   240 5   205   74 -------------------------------------------------- Q1. 上記にあるA1の”33”を、A1以外のセルにセットするとC,Dに正規のデータが抽出されない。    この際、    ・ =IF(AND(A1>=60,A1<=180),ROW(A1),"")    ・ =IF(OR(ROW(A1)>COUNT($C:$C),COLUMN(A1)>2),"",INDEX($A:$B,SMALL($C:$C,ROW     (A1)),COLUMN(A1)))    の抽出範囲も設定をしてみましたが、全く結果が得られません。必ずA1にデータがないとだ    めなのでしょうか。    もし可能であれば、その応用として下記の内容を検討しており、非常に苦戦しております。    是非教えていただければと思いますので、よろしくお願いします。 Q2. 上記サンプルの様なシートが2つ存在し、それを一枚のシートにまとめ、2つのデータベース     からそれぞれに対し異なる抽出条件を提示し、その結果一覧をそれぞれ表示したいと検討     しております。    大変申し訳ないのですが、少々急いでおります。是非よろしくお願いいたします。

みんなの回答

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

こんにちは! 前回の質問とまったく同じようですが、 >からそれぞれに対し異なる抽出条件を提示し・・・ の部分を見逃していましたので、今一度画像を載せてみます。 ↓の画像で左側がSheet1、右側がSheet2にしています。 Sheet2の2行目(A2・B2セル)にそれぞれの条件を入力します。 Sheet2のA4セルに =IF(OR(COUNTBLANK($A$2:$B$2),SUMPRODUCT((Sheet1!$A$1:$A$1000>=$A$2)*(Sheet1!$A$1:$A$1000<=$B$2))<COLUMN(A1)),"",INDEX(Sheet1!$B$1:$B$1000,SMALL(IF(Sheet1!$A$1:$A$1000>=$A$2,IF(Sheet1!$A$1:$A$1000<=$B$2,ROW($A$1:$A$1000))),COLUMN(A1)))) これは配列数式ですので、Shift+Ctrl+Enterで確定します。 これを列方向にオートフィルでコピーすると画像のような感じになります。 ※ 今回も外していたらごめんなさいね。m(_ _)m

think9
質問者

お礼

tom04さん、ご返信遅くなり失礼いたしました。 すごくわかりやすく、図まで入れていただいて非常にわかりやすく、自分でもここまではクリアーしました。 ありがとうございました。 たださらに教えていただきたいと思うのですが、サンプルデータを作成次第再度質問に上げさせていただきますので、引き続きよろしくお願いいたします。 また、ka28miさんもKURUMITOも大変貴重なご指導ありがとうございました。 みなさん、すごいですね。また、よろしくお願いいたします。

  • ka28mi
  • ベストアンサー率41% (969/2315)
回答No.2

ご質問の意味が、あまり理解できないのですが、 C1セル、D1セルに、それぞれ下の式を入れたうえで、 A1が空白だと、C1およびD1に、A1に33が入っている時と同じ情報が入らない、 ということで良いのでしょうか? もし、そうであれば式の中に「A1>」「ROW(A1)>]というように、A1セルを条件にしていますから、当然、その式で考えると、A1に「33」とある時とは、違う答えになります。 A1に入っている値によって、C1やD1に入る値は変わります。 一つ目の式がC1に、二つ目の式がD1に入っているのであれば、この式の目的はA列の値からC列の値を決め、A列・B列・C列の値からD列の値を決めようという式です。 A列が空白の行は、C列が式により空白になります。 もっとも、サンプルの値であれば、エクセル2007で入れて見た限りでは、 A1が33でも空白でも D1が89、D2が152、C3が3、C4が4という同じ結果になりました。

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

1行目には文字などが有ってお示しのようなデータが2行目か下方に入力されているとします。 作業列を作って対応することでしょう。 作業列をE列としてE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(A2>=60,A2<=180),ROW(A2),"") C2セルには次の式を入力して横方向にD2セルまでオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(ROW(A1)>COUNT($E:$E),"",INDEX($A:$B,SMALL($E:$E,ROW(A1)),COLUMN(A1)))