- ベストアンサー
ある特定データを表示順に抽出したい
お世話になります。どうしても解決できないことがありぜひご教授願えたらと思います。 1 2 A 日本 みかん B アメリカ りんご C 日本 ぶどう D 台湾 バナナ E 日本 いちご ・ ・ ・ あるデータが上記のようにあるとします。このとき、1列が「日本」となっているもののみを抽出して以下のように表示したいと思っています。 1 2 P 日本 みかん Q 日本 ぶどう R 日本 いちご 自動で表示させる場合(P1などにいれる関数など)にはどのようにしたらよいのか、お教えいただければ幸いです。どうぞ宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
これは結構頻出する質問なのですが、フィルタオプションが最適な解だと思います。関数でやるとあまり簡単な式にはなりませんよ。 それより最初に実際のエクセルシートをよく見てください。 横(列)方向にはA、B、C、D…、縦(行)方向には1、2、3、4…となっているばずです。質問は行、列が逆の書き方になっていますが意図して逆に書いていますか? 以下は「A列に国名、B列に品名がそれぞれ上から下方向に入力されている」と解釈して回答します 質問文から「自動で表示」させるのはデータが入力されているシートと「同じシート」と判断しました。シートの任意のセル(A列はやめる方が良いでしょう)に以下の式を貼り付けて、下方向、および右方向に貼り付けてください。 =INDEX(A:A,SMALL(INDEX(SUBSTITUTE(($A$1:$A$500="日本")*1,0,10^5)*ROW($A$1:$A$500),),ROW(Y1))) でもこの式だと表示したい個数以上に式をコピーすると#REF!エラーになるはずです。エラーが表示されないようにするためにはIF文で条件式を追加します =IF(ROW(Y1)>COUNTIF($A$1:$A$500,"日本"),"",INDEX(A:A,SMALL(INDEX(SUBSTITUTE(($A$1:$A$500="日本")*1,0,10^5)*ROW($A$1:$A$500),),ROW(Y1)))) この式はデータ範囲が500行目までにしています。必要に応じて変更してください。
その他の回答 (4)
- tarinko_06
- ベストアンサー率24% (15/62)
#3の人ではありませんが >ROW(Y1)の"Y1"とはどのように理解すればよろしいのでしょうか。 ROW関数は行番号を返す関数です。 Y1だから1が返ってきます。コピーすると次のセルは Y2になります。今回の式だとコピーした数を数えなくてはいけないので使っているのでしょう。 で、なぜYなのか。間違ってるかもしれませんが、おそらくXY軸等で使うYの事を指してるんでしょう。 だから、好みの問題なのでCOLUMNのC等でもいいですし、あまり深い意味はないかと。
- imogasi
- ベストアンサー率27% (4737/17070)
毎日のように、条件で抜き出し問題を、関数しかいやだ,関数しかわからない、という人が質問しています。 関数は抜き出し問題は苦手です。持ってくる行がデータのありように影響を受けて、浮動するからです。 VBAなら稚拙な方法なら簡単・素直なロジックで出来ます。 #3のようなご回答が判るにば、相当の勉強をしないとなりません。 そこで中間作業列を使った方法を「imogasi方式」としてこのコーナーで沢山回答してます。 ーー 例として http://dospara.okwave.jp/qa3342059.html?ans_count_asc=20 の#2です。 別シートに出すのも少し式を変えると出来ます。 そこには作業列を使わない方法の回答も出ています。
- nre40689
- ベストアンサー率13% (6/46)
- suz83238
- ベストアンサー率30% (197/656)
補足
説明不足で申し訳ありません。 オートフィルタではなく、関数などを予め組み込んでおいて自動で抽出することが目的となっております。 どうぞご教示の程、宜しくお願いいたします。
補足
ご回答ありがとうございました。ROW(Y1)の"Y1"とはどのように理解すればよろしいのでしょうか。たびたびで恐縮ですが、どうぞよろしくお願いいたします。