• ベストアンサー

表の中から条件のあうものだけで別に表をつくる

エクセルです。いろいろ考えましたが思い浮かびません。 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[小川]  ・・・・・・ というふうに別にリストを作りたいのです。 マクロを使わずに関数だけで何とかならないでしょうか。 同じシート内に作業領域があるのは問題ありません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

D列を作業列として D1セル 1 D2セル =D1+(C2="女") E2セル =IF(LOOKUP(8^8,D:D)>ROW()-1,ROW()-1,"") F2セル =IF(E2="","",INDEX(B:B,MATCH(E2,$D:$D)+1)) D2:F2セルを下へオートフィル

gabo2gou
質問者

お礼

ありがとうございました。助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

例データ 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文を前部にかぶせる。 しかし配列数式なので、データ数式がい多いと、メモリの負担の面で、実効性は有るかどうか不安アリ。 ーー 関数に拘らないほうが良い課題であると思う。

gabo2gou
質問者

お礼

慣れない質問の書き方で申し訳ありません。 また、過去の質問を調べるのにどういう探し方をしたらよいのかもわからない初心者です。(本ではかなり調べたつもりでしたが) imogasi方式。 調べてみました。 imogasiさんの考案された方法ですね。 配列数式とあわせて、これからのわたしの課題とします。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Excel(エクセル)基本講座:オートフィルタ(データ抽出) http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm を参考にC列にフィルタをかけて女性だけを表示し、コピペするとか。

gabo2gou
質問者

補足

すばやい回答をありがとうございます。 コピペではなくて関数を埋めるだけで自動でできる方法はないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel関数 表の中のデータを検索して表示したい

    検索範囲が列や行の一方向でないため行き詰まってしまいました。 いい式の組み立てがありましたら、教えていただけますようお願いいたします。 クラスのリスト A B C D 1 1組 田中 吉田 織田 伊藤 2 2組 坂本 神奈 千葉 小笠原 3 3組 浜田 金沢 岡本 多田 A列の氏名を元にB列にクラスを表示したい A   B 多田 3組 伊藤 1組 ・ ・ ・ 検索のキーとなる氏名に重複はありません。 =INDEX($B$1:F3,IF(COUNTIF($B$1:$F$3,A6),ROUND(MOD(SUMPRODUCT(($B$1:$F$3=A6)*(ROW($B$1:$F$3)+ROW($B$1:$F$3)/1000)),1)*1000,),""),1) 該当の文字が入力されている行番号を検索してINDEXをつかって表示する式をつくりました。 しかし、リストの表が1行目から作成されていないとエラーになってしまいます。 なにかいい式はないでしょうか?

  • エクセルで別シートを参照していて、参照元のデータを変更した場合

    エクセルで別シートを参照したいのですがうまくいきません。 (1)Sheet1には顧客データが入っています。 【Sheet1】   A   B   C 1 氏名 住所 性別  2 小川 東京 男 3 佐藤 大阪 女 4 鈴木 福岡 女 (2)Sheet2ではSheet1の顧客データの一部+獲得ポイントのデータが入っています。Sheet2のA列とB列に「=Sheet1!A2」とういう風に関数を入れてSheet1を参照しています。C列~は手入力でデータを入力しています。 【Sheet2】   A   B    C    D 1 氏名 住所  12/1 12/15  2 小川 東京  1    5 3 佐藤 大阪  1    5 4 鈴木 福岡  1    5 (3)Sheet1に新たに顧客情報を入れますが、氏名は五十音順にしたいので行を挿入して入力します。(行3に加藤さんを入れました) 【Sheet1】   A   B   C 1 氏名 住所 性別  2 小川 東京 男 3 加藤 沖縄 男 4 佐藤 大阪 女 5 鈴木 福岡 女 (4)私の希望としては、(3)をしたらSheet2は↓のようになってほしいのですが、実際には(2)の状態のままです。 【Sheet2】   A   B    C    D 1 氏名 住所  12/1 12/15   2 小川 東京  1    5 3 加藤 沖縄   4 佐藤 大阪  1    5 5 鈴木 福岡  1    5 (5)Sheet1の変更結果をSheet2に反映することは無理なのでしょうか?

  • 表から条件で抽出して別の表を作る

    いつもお世話になっています。またわからなくなってしまいまして、わかる方がいましたらよろしくお願いいたします。 下記のような表で、例えばB列が『A商店』のデータを抽出して、別の表としてE列以降に新しい表を作るようなことは可能でしょうか? =====  A    B   C D E    F   G りんご A商店 2個  りんご A商店 2個 バナナ A商店 3個  バナナ A商店 3個 りんご B商店 5個  バナナ A商店 5個 みかん C商店 3個  みかん A商店 1個 バナナ A商店 5個 みかん A商店 1個 バナナ C商店 3個 ===== よろしくお願いいたします。

  • Excelの男女別集計に関する質問です。

    下表で会費欄には文字、数字、記号とブランク欄があります。C11は文字列と数字に関する男の数です。これを求める式を教えて下さい。 C列が○など、一種類ならSumproduct関数が使えること承知しています。文字と数値が混在する場合はどうしたらよいでしょうか? A B C 2 氏名 男女 会費 3 Aさん 男 済 4 Bさん 男 5月3日 5 Cさん 女 ○ 6 Dさん 男 レ 7 Eさん 男 8 Fさん 女 200 9 Gさん 女 10 Hさん 男 5月20日 11 男 4 12 女 2 13 全体 6

  • エクセルで項目ごとに新しい別のシートにしたい

    エクセルで名簿を作成しています。 C列に生徒番号、D列に氏名、E列にクラスがAからFまでランダムに入っています。 この名簿を新しいファイルに、クラスごとに別のシートにしたいです。 できればシート名も「A」「B」となっていれば助かります。 A,B列にもデータが入っていますが、今回は生徒番号、氏名、クラスのみの ファイルにしたいです。 良い方法を教えてください。よろしくお願いします。

  • 一致する条件の番号を写し取りたい

    2つに分かれているブックを、1つにまとめる作業をしているのですが 簡単にできないか、教えていただきたいのですが ブック1には 1  氏名   社員番号   ID番号 2   A     1      0012  3   D     4      0015 4   B     2      0013 5   C     3      0014 ブック2には 1 氏名    ID番号 2  A 3  E 4  C  5  B とあります。 ブック1,2の同じセルの氏名が一致する場合、ID番号を反映させ 違う場合は、検索をして一致する番号を反映させる方法が あれば、ぜひ教えてください。 手作業でしているので、時間がかかり困っております。

  • 表計算(ある条件にそうものだけを合計したい)

    Excelで、表にあるようなものを作っています。 氏名(セルB4:E4)の頭文字に“A”もしくは“B”がついており、各科目(B5~E9)の点数が出ています。 この“A”の頭文字がついている人の1月の合計点を“A 合計”(セルF5~F9)に出し、Bの頭文字がついている人は、“B 合計”(セルG5~G9)にそれぞれ出していきたいと思っています。 その場合の計算式は、どのようになりますでしょうか? 初歩的かもしれませんが、どうか助けてください。 よろしくお願い致します。

  • エクセルでこんなジャンプ出来ますか

    Sheet2    A     B   C  D    E   F   G     H 3  no.   氏名     no.   氏名     no.   氏名 4 100001 山本A   102001        104001 伊藤F 5 100002        102002 佐藤D   104002  6 100003 鈴木B   102003        104003 中村G 7 100004 高橋C   102004 山田E   104004 :   :    :       :     :       :     : Sheet1    A     B    C   3  no.   氏名  回数   4 104003 中村G   3 5 100004 高橋C   5 6 102003 :   :    :    : Sheet2の表を基にSheet1のような表を作成したい。 Sheet2には約2万件の番号が登録されています。 Sheet1のA列のno.は番号順に入力されるわけではない。 Sheet1のA列にno.を入力するとSheet2より該当の氏名をB列に表示、 該当氏名が空白の場合は、Sheet2の該当セルにジャンプし、氏名入力後Sheet1のC列にジャンプして戻る。 また、Sheet2において例えば、B1に104001を入力するとH4にジャンプしEnterを押すとB1に戻り、100002を入力するとB5にジャンプ氏名入力後Enterを押しB1に戻る。・・・ということもしたいのですがマクロではなく関数で出来るでしょうか?

  • 条件にあうデータを別シートにコピーしたい。

    下記のようなデータがシート1にあります。  A  B  C  D  E   F 1支店 氏名 個数 〆  資格  成績 2大阪 田中 5  10     0 3大阪 小林 12 20 ×   100 4東京 佐藤 20 30     50 5東京 倉本 3  10 ×   0 6東京 野村 18 15     200 これを資格がD列【×】に該当するデータすべて、 E列【0】に該当するデータすべて を別シート2に一覧にしたいのです。 今回であれば  A  B  C  D  E   F 1支店 氏名 個数 〆  資格  成績 2大阪 田中 5  10     0 3大阪 小林 12 20 ×   100 4東京 倉本 3  10 ×   0 このようになるような結果にしたいのですが 毎回まずD列が【×】のデータだけを抽出して別シート3に貼り付け 次にE列が【0】のデータでかつ資格が【空白】のデータを抽出して シート3の最下部に張り付ける。 そして支店別に並び替える、という作業を繰り返していますが、 データの更新頻度が早くデータも約1000行あり順次増えていく予定です。 ですので更新のたびに一覧を作成するのに時間がかかり困っています。 何か良い方法があれば教えていただきたいのですが・・・ よろしくお願いします。 なお、例の最上段のABCDEFエクセルの列番号 最左列の12345はエクセルの行番号のつもりです。

  • エクセルで作成した一覧表をカード形式にしたい。

    エクセルで作成した一覧表をカード形式にしたいのですが 例えばsheet1の 列1のセルA、B、C、D、E、Fに 山田さんの住所、氏名、年齢、職業、電話、備考 列2にセルA、B、C、D、E、Fに 佐藤さんの住所、氏名、年齢、職業、電話、備考、 列3にセルA、B、C、D、E、Fに 大山さんの… (以降は同様の繰り返し)を入力したとき、 sheet2の 列1のセルA、Bに山田さんの住所、氏名、 列2のセルA、Bに山田さんの年齢、職業、 列3にセルA、Bに山田さんの電話番号、備考、 列4にセルA、Bに佐藤さんの住所、氏名、 列5にセルA、Bに佐藤さんの年齢、職業、 列6にセルA、Bに佐藤さんの電話番号、備考、 列7にセルA、Bに大山さんの住所、氏名、 列8にセルA、Bに大山さんの年齢、職業、 列9にセルA、Bに大山さん電話番号、備考、 列10… と表示されるようにしたいのですが sheet2のA1、B1、A2、B2、A3、B3セルに数式を入力し 列4以降にコピーしても飛び飛びになってうまくいきません。 入力規則かと6列目まで増やしてコピーしても 7列目以降に正しくコピーできません。 何か関数が必要なのでしょうか?過去の質問も検索しましたが よく分かりません。よろしくお願いします。

専門家に質問してみよう