dポイントプレゼントキャンペーン実施中!

エクセルにて以下の事を試したいのですが可能なのでしょうか?

(1) まず最初に、Sheet1 と Sheet2 に全く同じ表を用意します。
(2) Sheet1の表には、

赤   100   a
青   300   b1
赤   100   a
赤   100   a
白   500   c
青   310   b2
青   320   b3
赤   100   a

と、手入力します。

(3) この時、Sheet1にデータを入力したと同時に、Sheet2の方では自動で、Sheet1の1列目が『青』となっている行だけを拾ってSheet2の表に表示させたいのです。

青   300   b1
青   310   b2
青   320   b3

と、言った具合いです。


私なりに、IF文を使って『セルA1が青であれば表示させ、それ以外であれば表示させない。』という感じで、

・Sheet2のA1に、
=IF(Sheet1!A1="青",Sheet1!A1,"")

・同様に、Sheet2のB1に、
=IF(Sheet1!A1="青",Sheet1!B1,"")

・同様に、Sheet2のC1に、
=IF(Sheet1!A1="青",Sheet1!C1,"")

とし、あとは表の下までオートフィルしてあげたのですが、これだと青以外が入力されていたセルの位置が虫喰い(空白のセル)のようになってしまい見た目がよくありません。


青   300   b1



青   310   b2
青   320   b3


と、なってしまいます。できればキレイに見えるように自動で上詰めにしたいのですが、方法がわからず仕方なく、虫喰いの行を一つずつ手作業で『表示させない』にしてやっています。
(※行を削除すると式がずれてしまいエラーになってしまうため)

何か良い改善方法、お知恵がありましたら、ご助力のほどを是非とも宜しくお願い致します。

それとも、エクセルで根本的にそこまでの機能は有してないのでしょうか?

A 回答 (1件)

>エクセルで根本的にそこまでの機能は有してないのでしょうか?


何とも大仰な! 関数の組み合わせでできますよ。

過去問にもたくさんの事例がありますがSheet2の適当なセルに以下の式を貼り付けて下方向、および右方向にコピーしてください

=IF(COUNTIF(Sheet1!$A:$A,"青")>=ROW(A1),INDEX(Sheet1!A:A,SMALL(INDEX(SUBSTITUTE((Sheet1!$A$1:$A$1000="青")*1,0,10^5)*ROW(Sheet1!$A$1:$A$1000),),ROW(A1))),"")
    • good
    • 0
この回答へのお礼

遅くなりましたが回答ありがとうございました。
お答え頂いた関数を調べてこれから意味を理解していきたいと思います。

お礼日時:2008/02/18 19:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!