[[20060926130607]] 『抽出したいのですが・・・』(初心者!まい) ページの最後に飛ぶ

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

 

『抽出したいのですが・・・』(初心者!まい)

 下記の一覧表があります

 シート1

      A     B     C     D     E     F     G

 1    名前   得意科目

 2    山本   国語    算数

 3    田中   算数    理科

 4    山崎   社会    理科

 5    村田   算数    社会

 この表を得意科目別に選びます(これが理想形)

 シート2

      A     B     C     D     E     F     G

 1    算数   国語    理科   社会    

 2    山本   山本    田中   山崎  

 3    田中         山崎   村田

 4    村田         

 5             

 自分で思考錯誤の上 やってみたのですが・・・

 シート2 A2に{=if(A1=シート1!b2:g2,シート1!b2,"")}

      A3に{=if(A1=シート1!b3:g3,シート1!b3,"")} 以下同様に入れると

      A     B     C     D     E     F     G

 1    算数   国語    理科   社会

 2    山本   山本         

 3    田中         田中

 4               山崎   山崎

 5    村田              村田

 ・・と空白だらけになってしまうのですが

 上記の理想形(空白をなくす)にするのにはどうしたらいいのでしょう?

 お願いします!!

           


 =IF(SUM((Sheet1!$B$2:$C$5=A$1)*1)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$5,SMALL(IF ((Sheet1!$B$2:$C$5=A$1)=FALSE,"",ROW($A$1:$A$4)),ROW(A1))))
ctrl+shift+enterで確定
 確定すれば{  }でかこまれます。右へ下へフィールコピー
 {=IF(SUM((Sheet1!$B$2:$C$5=A$1)*1)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$5,SMALL(IF((Sheet1!$B$2:$C$5=A$1)=FALSE,"",ROW($A$1:$A$4)),ROW(A1))))}

(B&B)


 タイトルは『』でHNは()ですよ^^
 修正しておきました。(dack)

 ◆こんな方法もあります
A2=IF(ROW(A1)>COUNTIF(Sheet1!$B$2:$C$5,A$1),"",INDEX(Sheet1!$A$1:$A$5,SMALL(INDEX(SUBSTITUTE((Sheet1!$B$2:$C$5=A$1)*1,0,10^5)
 *ROW(Sheet1!$B$2:$B$5),),ROW(A1))))
◆Enterで式を確定
(Maron)

みなさん ありがとうございます ^^

今挑戦しているのですがシート2のA1からの表をC3からにするとROW(C3)に

したのですが表がめちゃくちゃになりました・・・

行列を変えると他も変更するんですか?


 =IF(SUM((Sheet1!$B$2:$C$5=A$1)*1)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$5,SMALL(IF 
                                    ↑これはこのまま
 ((Sheet1!$B$2:$C$5=A$1)=FALSE,"",ROW($A$1:$A$4)),ROW(A1))))
                         ↑これはこのまま

 ROW($A$1:$A$4)   $A$4は行数に応じて変える
 $A$1: これはこのまま
(B&B) 

 お久で〜す。 私は"FIND"を使って.....
 =IF(ISERROR(INDEX(Sheet1!$A$1:$A$5,SMALL(IF(ISNUMBER(FIND(A$1,Sheet1!$B$2:$C$5,1)),ROW(Sheet1!$A$2:$A$5)),ROW(A1)),1))
,"",INDEX(Sheet1!$A$1:$A$5,SMALL(IF(ISNUMBER(FIND(A$1,Sheet1!$B$2:$C$5,1)),ROW(Sheet1!$A$2:$A$5)),ROW(A1)),1))

 Ctrl + Shift + Enter として確定です。
   (SS)


夜遅くまですいません(><)・・・

シート2の方ですけど・・・

      A     B     C      D     E     F     G

 1              算数   国語    理科   社会    

 2              山本   山本    田中   山崎  

 3              田中         山崎   村田

 4              村田         

 5 

これだったら

=IF(SUM((Sheet1!$B$2:$C$5=C$1)*1)<ROW(C1),"",INDEX(Sheet1!$A$2:$A$5,SMALL(IF((Sheet1!$B$2:$C$5=C$1)=FALSE,"",ROW($C$1:$C$5)),ROW(C1))))

こうですよね? 

     A     B      C     D      E     F     G

 1                                  

 2              算数   国語    理科   社会  

 3              山本   山本    田中   山崎  

 4              田中         山崎   村田

 5              村田
    
これにすると わけがわからなくなるんです(><)・・・


 (B&B)さんが上で
 > ROW($A$1:$A$4)   $A$4は行数に応じて変える
 > $A$1: これはこのまま
 と書いておられますが、これは
 「シート1の表の行数が変わった時変更」して下さい。
   (行を挿入しても絶対参照になっているので変更無しです。)

 それ以外の所で、ROW()の中身は“行数が変わらない様に注意”
   (行を挿入してROW(C1)→ROW(C2)になると、行数が変わっているので
    元に戻して下さい。)
 シート2のセルを参照している所は“1行下がったら1行下げる”
   (行を挿入してもSheet1!$B$2:$C$5=C$1→Sheet1!$B$2:$C$5=C$1
                                   ~~~                   ~~~
   絶対参照になっていて自動的に変わらないので参照先を変えて下さい。)

 以上の所に注意して、もう一度やってみませんか?

 (HANA)  文章一部訂正(23:30)


 ↓のスレのみやほりんさんの解説が参考になるのでは?(ROUGE)
[[20060302144720]]『90より以上の人の名前を抽出したい』(shota)

ようやく意味がわかりました 長々とありがとうございました

これからもエクセルがんばりますので宜しくお願いします


コメント返信:

[ 一覧(最新更新順) ]


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