[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『INDEX関数、MATCH関数、SMALL関数の合成の仕方を教えてください』(たか)
以下のようなことを考えていますが壁にぶつかっております。
助言いただきたくお願い申し上げます。
参照データ
シート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)
ありがとうございました。
確かにやりたい作業ができました。
あと申し分けないのですが理解を深めるために1点教えて下さい。
「9^9」は「9の9乗」だと思うのですがこの命令はどのような意味があるのでしょうか?
by たか
Smallで取りだすのでB列が1じゃない場合に0だと0が最初に取得されてしまいますから 単に大きい数字にしているだけです。 今回の場合なら100以上の数値(101とか)でもOKです (momo)
わかりました。
ありがとうございました。
by たか
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.