- ベストアンサー
表の中から条件のあうものだけで別に表をつくる
エクセルです。いろいろ考えましたが思い浮かびません。 a1[番号]b1[氏名] c1[性] a2[1] b2[吾郷] c2[男] a3[2] b3[伊藤] c3[女] a4[3] b4[宇佐美]c4[男] a5[4] b5[江田] c5[女] a6[5] b6[小川] c6[女] a7[6] b7[川田] c7[男] ・・・・・・・・・ の中から女性だけを抽出して e1[番号]f1[氏名] c1[性] e2[1] f2[伊藤] e3[2] f3[江田] e4[3] f4[小川] ・・・・・・ というふうに別にリストを作りたいのです。 マクロを使わずに関数だけで何とかならないでしょうか。 同じシート内に作業領域があるのは問題ありません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
例データ Sheet1 第2行目から A列 B列 C列 E列 1 吾郷 男 2 伊藤 女 1 3 宇佐美 男 4 江田 女 2 5 小川 女 3 6 川田 男 E列の式は、E2に=IF(C2="女",MAX($E$1:E1)+1,"") と入れて下方向に式を複写。 Sheet2に行って A2に=INDEX(Sheet1!$A$1:$C$100,MATCH(ROW()-1,Sheet1!$E$1:$E$100,0),COLUMN()) と入れてC2まで式を複写。 A2:C2をA4:C4まで式複写。 結果 Sheet2 A2:C4 2 伊藤 女 4 江田 女 5 小川 女 これより下まで引っ張る(式複写する)とエラーになる。 それに対する対策は =IF(ROW()-1>MAX(Sheet1!$E$1:$E$100),"",INDEX(Sheet1!$A$1:$C$100,MATCH(ROW()-1,Sheet1!$E$1:$E$100,0),COLUMN())) とする。 以上imogasi方式。 Googleで「imogasi方式」で照会してください。いかに同じ質問が過去に多いか。過去質問を探索していないか。 それに、質問の例を書くとき a1[番号]b1[氏名] c1[性] a2[1] b2[吾郷] c2[男] のような書き方をせず、私のように書いてくれたほうが、コピーして データー区切り位置で分割すればすぐ同じデータが作れるのでありがたい。 ーーーー 以上は作業列を使う方法だが A1:C4を範囲指定して A1に=INDEX(Sheet1!$A$1:$C$100,SMALL(IF(Sheet1!C1:C100="女",ROW(C1:C100),""),ROW()),COLUMN()) と入れてSHIFT,CTRL,ENTERを同時押しする。 2 伊藤 女 4 江田 女 5 小川 女 #NUM! #NUM! #NUM! のようになる。エラーを出さないようにするのは、女の行をCOUNTIFで出し、それより行数が多いと空白、というIF文を前部にかぶせる。 しかし配列数式なので、データ数式がい多いと、メモリの負担の面で、実効性は有るかどうか不安アリ。 ーー 関数に拘らないほうが良い課題であると思う。
お礼
慣れない質問の書き方で申し訳ありません。 また、過去の質問を調べるのにどういう探し方をしたらよいのかもわからない初心者です。(本ではかなり調べたつもりでしたが) imogasi方式。 調べてみました。 imogasiさんの考案された方法ですね。 配列数式とあわせて、これからのわたしの課題とします。 ありがとうございました。
- n-jun
- ベストアンサー率33% (959/2873)
Excel(エクセル)基本講座:オートフィルタ(データ抽出) http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm を参考にC列にフィルタをかけて女性だけを表示し、コピペするとか。
補足
すばやい回答をありがとうございます。 コピペではなくて関数を埋めるだけで自動でできる方法はないでしょうか。
お礼
ありがとうございました。助かりました。