• ベストアンサー

エクセル 検索したデータを1行抽出するには

よろしくお願いします。 シート1には 氏名       生年月日   コード    コード   コード    交付番号 安心太郎    S20.12.20    1      2      3     1234567890 安全花子    S40.11.11    1                   2345678901 道路一郎    S30.10.25    2      3            3456789012 橋川理恵    S25.12.17    3                   4567890123 天気良太    S50.11.28    1      3            5678901234 という具合に、社員一覧表があるとします。 そして、シート2には コード番号     名前   1       普通自動車免許   2       原動機付自転車免許   3       大型自動車免許 というようにコード一覧表があるとします。 ここからなのですが、 シート3には「1.普通自動車免許取得者一覧」 シート4には「2.原動機付自転車免許取得者一覧」 シート5には「3.大型自動車免許取得者一覧」 というように、シート1にデータ入力をしたら、 自動的に、コード別に検索して、該当するコードに引っかかる者は、それぞれのコード別シート(シート3~5)に、該当者のデータ1行分(氏名・生年月日・コード・交付番号等)が丸々コピー(転記)されるにはどうしたらよろしいのでしょうか。 関数等を調べましたが、該当するものが見あたらず、 やはり、マクロで行う方法なのかと思ったのですが、 マクロが超初心者のため、やり方や命令文(?)などが全くわからず、困っております。 よろしくおねがいいたします。

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

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

ANo.3です。 >「持っている免許が1になる」ということは、 >やはり、ANo.1さんの上のデータのように、「コード」ではなく、「コード名」で「再度表を作り直す」か、または「別の表を作らないといけない(ダミー表)」ということでしょうか。 >シート1の表は形を崩したくありません。 >ということは、「ダミー表を作らないといけない」ということでしょうか。 回答に書いた通りにやってみてもらえれば、どうなるかわかると思いますが・・・ やってみてもらえないんでしょうか? また、sheet1に手を加えない場合です。 まず、sheet2に、Sheet1のA1:F1(みだし)をコピーします。 sheet2の A2:=IF(ISNA(MATCH(1,Sheet1!C2:E2,0)),"",Sheet1!A2) これを人数分下へコピーしてください。 B2:=IF($A2="","",IF(Sheet1!B2="","",Sheet1!B2)) これをB:F列で人数分下へコピーしてください。 sheet3の A2:=IF(ISNA(MATCH(2,Sheet1!C2:E2,0)),"",Sheet1!A2) これを人数分下へコピーしてください。 B2:=IF($A2="","",IF(Sheet1!B2="","",Sheet1!B2)) これをB:F列で人数分下へコピーしてください。 sheet4の A2:=IF(ISNA(MATCH(3,Sheet1!C2:E2,0)),"",Sheet1!A2) これを人数分下へコピーしてください。 B2:=IF($A2="","",IF(Sheet1!B2="","",Sheet1!B2)) これをB:F列で人数分下へコピーしてください。 これは、各シートのA2のMATCH(?,Sheet1!C2:E2,0)の?の部分の値がsheet1のC2:E2の間にあるかないかで表示するかしないかが決まります。 B2:F2は、A2に表示がある場合に表示します。 これを下方向にコピーします。 どんな表示になるかは、やってもらえればわかると思います。

pyhcool
質問者

お礼

再度の回答、本当にありがとうございます。 その後、フィルタオプションの設定をマクロ化させる方法を教わり、行ったところ、 希望通りにスムーズに抽出処理をすることができました。 ここまで丁寧に解説までしていただき、ありがとうございます。 今回fumufumu_2006さんに教えていただいた方法は、習得し、使えるようになっていきたいと思います。 本当にありがとうございました。

その他の回答 (3)

回答No.3

ANo.2です。 「集計」じゃなかったです。 ANo.2をすると、ANo.1さんの上のデータのような状態になります。(持ってる免許が1になる) それにオートフィルタをかけるのはどうでしょう? または、sheet2,sheet3,・・・の A1=IF(Sheet1!A1="","",Sheet1!A1) として、必要な範囲にコピーすると、各sheetがsheet1と同じ表示がされます。 それにオートフィルタをかけるのはどうでしょう?

pyhcool
質問者

お礼

再度回答していただき、本当にありがとうございます。 「持っている免許が1になる」ということは、 やはり、ANo.1さんの上のデータのように、「コード」ではなく、「コード名」で「再度表を作り直す」か、または「別の表を作らないといけない(ダミー表)」ということでしょうか。 シート1の表は形を崩したくありません。 ということは、「ダミー表を作らないといけない」ということでしょうか。 自分でも色々なサイトから勉強してみたり、検索してみたりして、良い方法を探したりしているうちに、 なんとも頭が混乱してきてしまいました。 本当にありがとうございました。

回答No.2

A1:氏名 B1:生年月日 C1:コード D1:コード E1:コード F1:交付番号 で、A2からデータが入っていたとします。 G1:普通自動車免許 H1:原動機付自転車免許 I1:大型自動車免許 と見出しを付けます。(別になくてもいいけれど) G2:=IF(ISNA(MATCH(1,C2:E2,0)),"",1) H2:=IF(ISNA(MATCH(2,C2:E2,0)),"",1) I2:=IF(ISNA(MATCH(3,C2:E2,0)),"",1) として、G2:I2を、人数分下へコピーします。 これで、各免許のある人に1が付くので、それで集計する。 というのはどうでしょうか? 最大10個なら、C:Lがコードで、N:Wが、各資格の有無になります。 N2:=IF(ISNA(MATCH(1,C2:L2,0)),"",1) O2:=IF(ISNA(MATCH(2,C2:L2,0)),"",1) ・・・ W2:=IF(ISNA(MATCH(10,C2:L2,0)),"",1)

pyhcool
質問者

お礼

回答ありがとうございます。 何がしたいのかと申しますと、 1. シート1にデータ入力をしたら、 2. コード別に作成したシートに、 3. 該当する人のデータを丸々1行分(氏名・生年月日・コード・交付番号等)を抽出させたい のです。 抽出した人数を集計したいわけではありません。 今、フィルタオプションの方法が浮かんだのですが、 検索するコードのセルが多いからでしょうか、うまく抽出されずに悩んでおります。 ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

氏名       生年月日   原 付    普 通   大 型    交付番号 安心太郎    S20.12.20    1      1      1     1234567890 安全花子    S40.11.11    1                   2345678901 のようなデータなら、オートフィルタで抽出してコピーすれば結果がでますが・・・。 氏名       生年月日   免許種別   交付番号 安心太郎    S20.12.20    3     1234567890 安全花子    S40.11.11    1     2345678901 上位免許であれば、下位の運転資格があるので、上記のようなデータの方が良いのでは?

pyhcool
質問者

お礼

早速の回答、ありがとうございます。 例として挙げたのは運転免許についてなのですが、 実は、全く違う資格免許についての一覧なのです。 なので、それぞれの免許に上位・下位などというものは存在しないんです。 そしてまた、コードも例として3つほど挙げたのですが、 実は10以上もあるんです。 もっと詳しく説明すれば良かったですね、申し訳ありませんでした。 なにか、良い方法はありませんでしょうか。

関連するQ&A

  • Excel VBA 検索して該当行を抽出

    はじめまして、下記のように、Excelでマクロを組みたいのですが 組み方がわかりません。 ご教授願えませんでしょうか。 MS Ofiice2010 生徒数500名ほど シート1には生徒の生徒番号、氏名などがあります。      A     B     C     D 1 生徒番号   氏名   備考 2 120001     田中 3 120002     山田  試験時休み 4 T120009    相田   転入 シート2には生徒の成績表:生徒番号、氏名、国語、算数、理科、社会 生徒番号でソートされていません。      A     B     C     D     E     F    1 生徒番号   氏名   国語   算数   理科   社会   2 120001     田中   80    65     65     75 3 T120009    相田   90    85     80     80 シート1の生徒番号でシート2生徒番号を検索して、該当したら成績を シート1の検索した生徒番号のD列以降にコピーしたいのですが      A     B     C     D     E     F     G 1 生徒番号   氏名   備考   国語   算数   理科   社会 2 120001     田中         80    65     65     75 3 120002     山田  試験時休み 4 5 10 T120009    相田   転入    90    85     80     80 お手数ですが、ご教授願えますでしょうか。 よろしくお願いいたします。

  • 1行から2行へのコピーなんですが

    データベースとなるシートの任意の連続する複数行を違うシートの2行にコピーしたいと考えています。 要は、 番号、氏名、社員番号、生年月日・・・と続く1行のデータを 印刷するためのシートへ 番号、社員番号・・・ 氏名、生年月日・・・のように2行にしたいのです。 1行から1行であればエクセルの基本的な機能で出来ますが、 1行から複数の行へ、終わったら次の行へ移る、の2点でつまづいております。 マクロ初心者へアドバイスお願いします。

  • Excelの検索について

    シート1に、 A列 B列 C列 …G列 氏名 番号 年月日1 …年月日2 が入力されています。 B列[番号]が"3"のときのみ、それと同じ行のA列[氏名]、C列[年月日1]、G列[年月日2]をシート2に、上から詰めて返す方法を教えてください。 難しく考えずに、VLOOKでいけるのでしょうか。

  • エクセル2007 データ抽出(関数)について

    教えてください。エクセルシートにて郵便番号と住所が重複しているデータを抽出したいのです。 例)ある顧客の情報として、シート1のA列に、1から10までの新規顧客の氏名、B列には生年月日が入力されています。C列,D列は空白で、E列には全ての顧客(新規顧客を含みます)の氏名、F列には生年月日、G列には郵便番号、H列には住所が入力されています。このふたつの情報の中から、新規顧客データと全ての顧客データの氏名、生年月日が重複している顧客のみ、C列にその郵便番号、D列に住所を表示させたいのです。 OSはXP エクセル2007です。 困っています。よろしくお願いします。

  • Excelにおけるデーター抽出

    Excelのシートに記載されている内容は次の通りです。 (1) セルA5~A60の間に1~56の昇順の番号 (2) セルB5~B60には氏名 (3) セルC5~C60には○、×、△の記号 このシートからC列が ○ の記号が付与されている者だけの氏名を別のシートのB7~B**の間に抽出するのですが、抽出したシートの行に空白ができないようにするには式をExcel関数で作成することは可能でしょうか? 若し、不可能でしたらマクロで行う場合のプログラムを教えて下さい。

  • <エクセル>マクロを使ってデータを入力したいのですが・・

    エクセル初心者のため、 どなたかご存知の方がいらっしゃいましたら教えていただけないでしょうか。 エクセルで、ある申込書のフォームにデータ(氏名・フリガナ・生年月日・年齢等を入力したいのですが100名分くらいあるためマクロを作って元データからコピーできれば・・と考えています。 100人分の元データはSheet1にあり、 1名につき1行で、A1に氏名、B1にフリガナ、C1に生年月日・・・(~F1まで)となっています。(~100行目まで) そのデータをSheet2にある申込書フォームの該当欄にコピーしたいのですが、簡単な方法はありますでしょうか。 Sheet2には10名分の入力欄があるので、、 Sheet1の1行目の人のA1(氏名)のデータをSheet2のB12(氏名入力欄)へ、 Sheet1の2行目の人のA2(氏名)のデータをSheet2のB14(氏名入力欄)へ、 ・・・・・ Sheet1の10行目の人のA10(氏名)のデータをSheet2のB30(氏名入力欄)へ、 という感じでコピーしていきたいです。 (フリガナ、生年月日、年齢などそれぞれ欄があります) とりあえず10人分ずつSheet2にコピーできるマクロが組めれば大変助かるのすが・・・。 説明も上手にできず申し訳ないのですが・・・。 私の知識レベルでは100人分こぴぺこぴぺする方が早いのかもしれませんが どなたかアドバイスをいただければ大変うれしいです。 どうか、宜しくお願いいたします。

  • Excelで抽出

    初めまして。よろしくお願いします。 Excel2000を使っています。 例えば、 A列     B列   C列   D列 お客様番号  氏名   契約日  生年月日  :      :    :    : という表があるとし、データは2000件ほどあると 思ってください。 1行目から最終行までみて、 『同一氏名』&『同一契約日』&『同一生年月日』の ものを違うシートに表示させたいのですが、 こういうことってExcelで出来るのですか? 出来るのであれば是非教えてください。 質問するのは初めてなので お手柔らかに・・・m(__)m

  • EXCELでの検索マクロを作りたいのですが

    マクロの初心者です。氏名の検索マクロを作成したいのですが分かりません。 A列:名前 B列:郵便番号 C列:住所 と 名前等のデータを(ランダムに)入力したシート1を作成し、 シート2にシート1の「A列:名前」から性(たとえば青木)で検索して検索ボタン(マクロボタン)を押して該当データを表示させるようにしたいのですが。

  • エクセルで、2つの選択から、別シートの数字表示する

    恐れ入りますが、 エクセルで、2つの選択から、別シートの数字を 表示させたいのですが。  作業シート 1  番号 氏名 コード名  資格 取得日 2  112 阿部 A001    免許   参照シート 1  番号 氏名 コード名 資格 取得日 2  112 阿部 A001   免許 20130728 番号を入力しかつコード名を入力すると別シート の取得日が表示させるようにしたいのですが。 (コード名、資格は別の参照資格コード表より 表示させております(VLOOKUP)) 大変恐縮ですが、こちらが解決できないために、 業務が滞っております。 恐れ入りますが、ご回答のほう、よろしくお願い 致します。

  • エクセルについて教えてください。

    エクセルについて教えてください。 A、B、2枚のシートがあります。 Aには社員コードや氏名、住所や生年月日等の一覧を作成。 Bのシートの任意のセルに社員コードを入力すると 一定のセルにそのコードの人の情報を自動的に表示させる方法を教えてください。

専門家に質問してみよう