[[20110222172555]] 『INDEX関数、MATCH関数、SMALL関数の合成の仕方を教』(たか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『INDEX関数、MATCH関数、SMALL関数の合成の仕方を教えてください』(たか)

以下のようなことを考えていますが壁にぶつかっております。
助言いただきたくお願い申し上げます。


 表示したい場所  シートAのA1,A2,A3・・・・

 参照データ

  シートBのA1〜A100・・・100件の取引先のコードが表示されている・・・4桁コードが「0001」〜「0100」と表示

  シートBのB1〜B100 ・・・ある条件を満たすと「1」それ以外は「0」と表示されている・・10件程度に「1」と表示

  シートBのC1〜C100 ・・・100件の取引先の取引金額の順位が表示されている・・「1」〜「100」と表示
 
 やりたいこと

  @B列に「1」が表示されているA列のコードのみを抽出する

  A抽出されたA列のコードをC列の昇順で表示する

    つまりシートBのA列にある100社の取引先のなかからB列で「1」の条件を満たすものを取引金額順(昇順)でシートAのA列に表示したい

 考えたこと

 =INDEX('#_シートB'!$A$1:$A$100,MATCH(1,'#_シートB'!$B$1:$B$100,0))                    

 =INDEX('#_シートB'!$A$1:$A$100,MATCH(SMALL('#_シートB'!$C$1:$C$100,ROW),'#_シートB'!$C$1:$C$100,0))

 これをそれぞれ合体させて

  =INDEX('#_シートB'!$A$1:$A$100,MATCH(1,'#_シートB'!$B$1:$B$100,0),MATCH(SMALL('#_シートB'!$C$1:$C$100,ROW),'#_シートB'!$C$1:$C$100,0))

 
 とシートAのA1に入力したら「#REF!」という表示でした。

 いろいろ確認しても何が間違っているのかよくわかりません
 

 どのように修正したらよろしいでしょうか。

(自分の考えを表示しましたがやり方にはこだわりません)。

 よろしくご指導願います。


 まず作業列を使ってやってみてはどうでしょうか?

 シートBのD1=IF(B1=1,C1,9^9) でD100までフィル

 シートAのA1=IF(ROW(A1)>SUM(B!B:B),"",INDEX(B!$A$1:$A$100,MATCH(SMALL(B!$D$1:$D$100,ROW(A1)),B!$D$1:$D$100,0)))

 でA100までフィル

 (momo)

momo 様

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

確かにやりたい作業ができました。

あと申し分けないのですが理解を深めるために1点教えて下さい。

「9^9」は「9の9乗」だと思うのですがこの命令はどのような意味があるのでしょうか?

by たか 


 Smallで取りだすのでB列が1じゃない場合に0だと0が最初に取得されてしまいますから
 単に大きい数字にしているだけです。
 今回の場合なら100以上の数値(101とか)でもOKです
 (momo)

momo 様

わかりました。

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

by たか


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.