アプリ版:「スタンプのみでお礼する」機能のリリースについて

大変恐れ入ります。過去の他の方の質問を一部引用しております。
<引用: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つのデータベース
    からそれぞれに対し異なる抽出条件を提示し、その結果一覧をそれぞれ表示したいと検討
    しております。


   大変申し訳ないのですが、少々急いでおります。是非よろしくお願いいたします。

A 回答 (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
「エクセル抽出関数の使い方、教えてください」の回答画像3
    • good
    • 0
この回答へのお礼

tom04さん、ご返信遅くなり失礼いたしました。

すごくわかりやすく、図まで入れていただいて非常にわかりやすく、自分でもここまではクリアーしました。

ありがとうございました。

たださらに教えていただきたいと思うのですが、サンプルデータを作成次第再度質問に上げさせていただきますので、引き続きよろしくお願いいたします。

また、ka28miさんもKURUMITOも大変貴重なご指導ありがとうございました。
みなさん、すごいですね。また、よろしくお願いいたします。

お礼日時:2012/09/17 15:31

ご質問の意味が、あまり理解できないのですが、


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という同じ結果になりました。
    • good
    • 0

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)))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!