[[20050207232114]] 『上詰めに関数で抽出』(koke) ページの最後に飛ぶ

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

 

『上詰めに関数で抽出』(koke)

 sheet1
    A     B     C      D      E
 1       東京  神奈川  埼玉  千葉
 2 名1    ○            ○
 3 名2          ○
 4 名3    ○                  ○
 5 名4    ○    ○
 6 名5    ○            ○

 sheet2
   A      B
 1 埼玉▼ 名1
 2        名5
 3
 4
 5
 6

 上の様なシートがありまして シート2のA1で埼玉を選ぶとB列に上詰で
 ○印の付いた名前を表示したいのですが 関数で出来るでしょうか?
 ご指導ください よろしくお願いします

 WindowsXP Excel2003


 Sheet2のB1
 =IF(SUM(N(OFFSET(Sheet1!$A$1,,MATCH($A$1,Sheet1!$B$1:$E$1,0),COUNTA(Sheet1!$A$2:$A$6+1,1))="○"))<ROW(),"",INDEX(Sheet1!$A$1:$E$6,SMALL(IF((OFFSET(Sheet1!$A$1,,MATCH($A$1,Sheet1!$B$1:$E$1,0),COUNTA(Sheet1!$A$2:$A$6+1,1))="○"),ROW($A$1:$A$6),""),ROW()),1))
 として、ShiftキーとCtrlキーを押しながらEnterキーで確定させて配列数式に。
 以下コピーでどうでしょうか。

 (川野鮎太郎)

 リスト範囲に名前を作成して数式簡易化。
B1:E6を範囲選択して
挿入>名前>作成 として「上端行」にチェックしてOK。
B2:B6を範囲選択すると「東京」と名前ボックスに表示されて
範囲名が作成されたのが分かります。
 
Sheet2の数式を下記。
=IF(COUNTIF(INDIRECT($A$1),"○")<ROW(A1),"",INDEX(Sheet1!$A$1:$A$6,SMALL(IF(INDIRECT($A$1)="○",ROW(INDIRECT($A$1))),ROW(A1)))) 
配列数式なので
Enterで確定せずにCtrlとShiftを押しながらEnter。
この数式を適当な範囲までコピーします。
(みやほりん)

 面白そうなので私もお一つ
Sheet2のB1に
=IF(SUM((Sheet1!$B$2:$E$6="○")*(Sheet1!$B$1:$E$1=$A$1))<ROW(A1),"",
INDEX(Sheet1!$A$2:$A$6,SMALL(IF((Sheet1!$B$2:$E$6="○")*ROW($A$1:$D$5)*(Sheet1!$B$1:$E$1=$A$1),ROW($A$1:$A$5)),ROW(A1))))
と入力してCtrl+Shift+Enterで確定
で、どうでしょう?
(SoulMan)

 川野鮎太郎さん みやほりんさん SoulManさん回答していただきありがとうございます
 どちらの数式も希望どうりの結果でした! ありがたく活用させていただきます
 しかし皆さん長い数式をスラスラと・・・ウラヤマシイ
 また ご指導ください ありがとうございました(kohe)


コメント返信:

[ 一覧(最新更新順) ]


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