• ベストアンサー

エクセル関数(抽出)について

宜しくお願い致します。 A列にランダムな数字が入力されている。(重複する数字はなく、空セルなし) B列にランダムな数字が入力されている。(重複する数字があり、空セルあり) ここで、B列に入力されているA列のセルの数字を全部B列降順に抽出したいのです。(以下のような場合です)    A   B 1  7  200 2  2  100 3  5  4  3  100  5  8   50 これを以下のようにする方法を教えて下さい。 200 7 100 2 100 3  50 8

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

こんにちは。maruru01です。 D、E列に抽出するとします。 D1に、 =IF(COUNT($B$1:$B$10)<ROW(A1),"",INT(LARGE(INDEX($B$1:$B$10+1/(ROW($B$1:$B$10)+1),),ROW(A1)))) E1に、 =IF(COUNT($B$1:$B$10)<ROW(A1),"",INDEX(A:A,ROUND(1/MOD(LARGE(INDEX($B$1:$B$10+1/(ROW($B$1:$B$10)+1),),ROW(A1)),1),)-1)) と入力して、D1:E1を下の行へコピーします。 なお、データ範囲は適宜変更して下さい。

yukai4779
質問者

お礼

素晴らしい。まさに求めていたのはこれです。質問の内容は簡単に説明しましたが、実はとんでもなく複雑であり、ポイントは次々と行が足されるためにその都度ソートをかける手間を省きたかったのです。

その他の回答 (5)

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.6

#3の回答にはE列の参照セルに勘違いがありました エラー処理も入れた関数なら以下のように修正してください。 D列:=IF(COUNT(B:B)>=ROW(A1),LARGE(B:B,ROW(A1)),"") E列=IF(COUNT(B:B)>=ROW(A1),INDEX(A:B,MATCH(D1,D:D,0)+COUNTIF($D$1:D1,D1)-1,1),"") ちなみに上記の式はどこの行に貼り付けてもOKです。

yukai4779
質問者

お礼

御回答ありがとうございます。 E列が循環になったのが残念です。でも御検討下さりまして感謝致します。

  • tresbien
  • ベストアンサー率51% (51/99)
回答No.4

Bに数値が重複していますから、逆のそれに対応する数値を抽出するには関数では無理になります。 どうしても自動でセルに書き出したいのであればVBA、又は、作業域を作るなら出来ると思います。 例えば、 C列に  =IF(B1="","",B1*10+COUNTIF($B$1:B1,B1))  などのように数値を加工したものをつくり (整数でなかったら別に考える) D列には  「D1」 =IF(ISERROR(LARGE(C:C,ROW())),"",LARGE(C:C,ROW()))  で並べ替える。 そしてE列で戻し  =IF(ISERROR(INT(D1)/10),"",INT(D1/10)) F列で対応したAの値を書き出す。  =IF(D1="","",INDEX(A:C,MATCH(D1,C:C,0),1)) 100に対応する値がひっくり返ってしまいましたが、あとは良いと思います。

yukai4779
質問者

お礼

御回答ありがとうございます。 なるほどVBAという方法もありますね。

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.3

D列とE列に抽出するなら D列:=LARGE(B:B,ROW(A1)) E列:==INDEX(A:B,MATCH(B1,B:B,0)+COUNTIF($D$1:D1,D1)-1,1)

  • ryk1234
  • ベストアンサー率40% (46/113)
回答No.2

関数でも何でもないですが… 1.B1からA5を範囲選択(アクティブセルB1) 2.降順で並び替えボタンクリック 求めている事と違っていたらごめんなさい

yukai4779
質問者

お礼

御回答ありがとうございます。

yukai4779
質問者

補足

その方法は私も知っていますが、関数で実施したいのです。

回答No.1

関数ではなくB列に対してオートフィルタで「空白以外のセル」を選択して。。。 その後B列を降順で並べ替えるのではダメなんでしょうか??

yukai4779
質問者

お礼

御回答ありがとうございます。

yukai4779
質問者

補足

関数での方法を教えて下さい。

関連するQ&A

専門家に質問してみよう