Excelで特定の文字を含んだ行を抽出する方法

このQ&Aのポイント
  • エクセルで特定の文字を含んだ行を抽出する方法について教えてください。
  • 例えば、エクセルのsheet1のA1からA100に入力された文字から、特定の文字を含む行を抽出することは可能でしょうか?
  • 具体的には、sheet2のA1に抽出したい文字を入力し、sheet2のA2以下には特定の文字を含む行を抽出するという操作を行いたいです。
回答を見る
  • ベストアンサー

エクセルで特定の文字を含んだものを抽出するには

エクセルで、sheet1のA1からA100に入力された文字があるとします。 sheet2のA1に抽出したい文字をいれると、sheet2のA2以下に抽出したい文字を含んだ行を抽出したいのですが可能でしょうか。 例) ■sheet1    A(昇順) 1 あ い 2 あ う 3 あ え 4 い う 5 え あ ■sheet2     A 1 検索条件「あ」 2 「あ」を含む行を自動的に抽出  あ い 3 「あ」を含む行を自動的に抽出  あ う 4 「あ」を含む行を自動的に抽出  あ え 5 「あ」を含む行を自動的に抽出  え あ ※「あ」を含む行だけを抽出したい 宜しくお願いします。 相談をして申し訳ございませんが、回答を確認するのが明日になります。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 関数を使用して、完全に自動的([Ctrl+Shift+Enter]の操作が不要)に抽出結果を表示させる方法を、2種類回答させて頂きます。 ●関数と作業列を使用して、自動的に抽出結果を表示させる方法  今仮に、Sheet3のA列を作業列としてとして使用するものとします。  まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(ISNUMBER(FIND(Sheet2!$A$1,INDEX(Sheet1!$A:$A,ROW()))),ROW(),"")  次に、Sheet3のA1セルをコピーして、Sheet3のA2~A100の範囲に貼り付けて下さい。  次に、Sheet2のA2セルに次の数式を入力して下さい。 =IF(ROWS($2:2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!A:A,SMALL(Sheet3!$A:$A,ROWS($2:2))))  次に、Sheet2のA2セルをコピーして、Sheet2のA2~A101の範囲に貼り付けて下さい。  後は、Sheet2のA1セルに、抽出するキーワードとなる文字列を入力するだけで、Sheet2のA2以下に抽出結果が表示されます。 ●作業列も使用せずに、関数のみで自動的に抽出結果を表示させる方法  まず、Sheet2のA2セルに次の数式を入力して下さい。 =IF(ROWS($2:2)>COUNTIF(Sheet1!$A:$A,"*"&$A$1&"*"),"",INDEX(Sheet1!A:A,SUMPRODUCT(ROW(Sheet1!$A$1:$A$100)*ISNUMBER(FIND($A$1,Sheet1!$A$1:$A$100))*(COUNTIF(OFFSET(Sheet1!$A$1,,,ROW(Sheet1!$A$1:$A$100)-ROW(Sheet1!$A$1)+1),"*"&$A$1&"*")=ROWS($2:2)))))  次に、Sheet2のA2セルをコピーして、Sheet2のA2~A101の範囲に貼り付けて下さい。  後は、Sheet2のA1セルに、抽出するキーワードとなる文字列を入力するだけで、Sheet2のA2以下に抽出結果が表示されます。  尚、こちらの方法はSUMPRODUCT関数を使用していますので、検索する行数が多くなりますと、計算負荷が増えるため、抽出結果が表示されるまでに時間が掛かる様になるという短所がありますが、100行程度であれば、問題となるほどには処理は遅くならないと思います。  しかしもしも、検索しなければならない行数が、実際には何千行にもなる場合には、抽出に要する計算の負荷が軽く済む、前述の「関数と作業列を使用する方法」の方が良いかも知れません。(パソコンの性能にもよりますが、千行か二千行程度であれば、SUMPRODUCT関数を使用した方法でも、処理に要する待ち時間は許容範囲内ではないかと思います)

marocona
質問者

お礼

ご回答ありがとうございます。 ネットで方法を検索しながら試していましたが、知識のなさに諦めかけていました。 上記の方法を試して、うまく抽出することができました。 感謝、感謝です。 ありがとう御座いました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

シート2のA2に =INDEX(Sheet1!A:A,SMALL(IF(ISERROR(FIND($A$1,Sheet1!$A$1:$A$100)),999,ROW($A$1:$A$100)),ROW(A1)))&"" と記入し,コントロールキーとシフトキーを押しながらEnterで入力(←忘れずに操作すること)し,下向けにつるつるっとコピーして入れておく。

marocona
質問者

お礼

ご回答ありがとうございます。 上記の方法を試して、うまく抽出することができました。 シンプルで良いと思いました。 すごく感謝しております。 ありがとう御座いました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

色々とややこしいので、データのフィルタのテキストフィルタで指定の値を含むで「あ」を含む行だけを抽出てはいかがでしょう。

marocona
質問者

お礼

ご回答ありがとうございます。 ご指摘の通り、フィルタをつかうと簡単だと思いました。 感謝しております。  ありがとう御座いました。

関連するQ&A

  • エクセル フィルタオプションで 特定の文字列を含む行を全て抽出する方法がわかりません

    エクセル2002を使用しています。 エクセルフィルタオプション設定で、特定の文字列を含む行を全て抽出する方法がわかりません。 たとえば sheet1    A    B    C    1 項目1 項目2 項目3  2  あ   い    う    3  う        あ    4  え        い 5      う       Sheet2   A         B         1 抽出文字列 2 あ  3   4 (計算式) 5 (以下抽出結果)   上記のようなデータがあり、sheet2!a5以降に「あ」が該当する行を全て抽出するといった式を組みたいのですが、 Sheet2 a2に抽出文字を入力し、a4に「=or(sheet1!a2=a2,sheet1!=a2,sheet1!=a2)」といった検索条件式を組み、フィルタオプションで、 ・リスト範囲 Sheet1!$a$1:$c$5 ・検索条件範囲 $a$3:$a$4 ・抽出範囲 $a$5  と指定するのですが、うまく抽出できません。 ちなみに抽出対象が文字列でなく数字なら(たとえばSheet1のデータの文字をあ→1 い→2のように全て数字に置き換えてSheet2!a2に1を入力)抽出できるのですが・・・ 文字列をセル参照して条件式を組む場合に何か気をつけることがあるのでしょうか?文章が長くなってしまい申し訳ありません。良い方法があればご教授お願いします。

  • Excelで特定も文字を含む行全てを、別のシートに抽出する方法を教えて

    Excelで特定も文字を含む行全てを、別のシートに抽出する方法を教えてください。 Excel2007で名簿を作成しています。 それぞれに、ある条件で「A」「B」「C」と3つに分類しています。 それぞれの分類ごとに、別シートに一括して抽出する方法をご教示ください。 例 Sheet1には (所属名)(コード)(氏名)(コード)(資格)(コード)(年数)(ランク)など14項目あります ※コードの一部には入力規則を使用したブルダウンで選択したり、lookup関数で、数字を入力すると所属名が表示されるようになっています 抽出条件となるランクは、年数のセルが●●以上であれば「A」、●●以下であれば「B」という関数を使用しています。 名簿に入力するごとに、「A」「B」「C」と別のシートに抽出させたいのです。 こちらのサイトでいろいろ検索し参考に試してみましたが、抽出できませんでした。 関数でもマクロでもいいので、抽出する方法を教えてくださると大変嬉しいです。 宜しくお願い致します。

  • Excel(エクセル)での特定文字以降の文字列抽出

    Excelでの 特定文字以降の文字列抽出&条件による振り分け を自動的にする事は可能でしょうか? 例えば図のように セルA2に1200×15 セルA3に2300×3 と入力されている時 C2に15 B3に3 と表示したいです。 できれば、 後で合計を出したいので数字として扱いたいです。 よろしくお願いいたします。

  • エクセルでデータ抽出後の元データを自動削除する方法

    エクセルで下記のような抽出方法を質問したのですが、 http://okwave.jp/qa/q6856275.html さらに、(2)のようなことが可能でしょうか。 (1)sheet1のA1からA100に入力された文字をsheet2のA1に抽出したい文字をいれると、    sheet2のA2以下に抽出したい文字を含んだ行を抽出。(解決済み) (2)上記、抽出時に抽出された元データを自動的に削除したい。 宜しくお願いします。

  • EXCEL 文字列条件抽出

    特定の文字列を検索条件として別シートに抽出する方法を御教授願います。 使用する関数はLEN,MID,LEFT,ISERR,もしくはワイルドカードなどを使用すればいいのかと考えておるのですがいまいちやりたいような数式を組めず悩んでおります。 やりたいことを言葉で表現するならば以下のような感じとなります。 「sheet1のF列に<107>という文字が含まれていた場合」 ・顧客別シートのD列に顧客ごとに分けて抽出 ・含まれていない場合、抽出しない と、単純なことなのです。が、制約がある為にうまくいきません。 制約は以下となります。 ・検索対象の文字列が以下のように決まった形ではない。 (1)A-BB-107○#----- (2)A-BB-107○#----- (3)ABB107○C #----- (4)ュウリABB-107○#----- (5)ュウリABB107○#----- (6)BB-107○C-D9#-----  など、その他にも数種類存在。(○部分には違う数字が入ります) ・上記でも分かるように<107>が始まる文字列の位置が決まっていない。 という具合です。 操作しているブック構成は下記のとおりです。 ・sheet1・・・参照用シート 4行目 /D列・・・顧客No / E列・・・顧客名 / C列・・・製品仕様 (A列,B列,G~AD列まで使用中) 5行目 / 1 / A / A-BB-107○#----- 6行目 / 2 / B / ュウリABB-107○#----- 7行目 / 1 / A / BB-107○C-D9#----- 8行目 / 3 / C / A-BB-107○#----- 9行目 / 3 / C / BB-107○C-D9#-----  10行目 / 4 / D / A-BB-107○#----- (会社のサーバーで管理している情報がそのままエクセルに打ち出されたシート。 情報量として約1000行ほど) ・sheet2,3,4,5(開始行,項目列は同じ位置)・・・特定の顧客別ごとに分け、特定の製品仕様だけを抽出したシート(参照用から引用)。 4行目/ B列・・・顧客No / C列・・・顧客名 / D列・・・製品仕様 5行目 / / A-BB-107○#----- 6行目 / / ュウリABB-107○#----- 7行目 1 / A / BB-1234C-D9#----- 8行目 / / A-BB-1115#----- 9行目 / / BB-107○C-D9#-----  10行目 / / A-BB-3498○#----- 特定の顧客NoをB列(一つのセルになってます。C列も同様一つのセルになってます)に入力すると、製品仕様すべてを抽出するように作成したシート。このシート内のG列から新たに表を作成し<107>の文字列が含む製品仕様を抽出しようと考えております。 出来れば、このような一度段階を踏んでから特定の仕様を抽出するのではなく各シートに対象となる顧客Noを入力すると特定の仕様が一回で抽出できるようなシートを作成したいのですが、関数初心者の為、うまく組めずこのような形となりました。(現在、参照用シートに作業列を作り対応。作業列ばかりが増えて正直困っているのも確かなのです) 【御教授頂きたいこと】 ・<107>の文字列を条件として別表に抽出する関数の数式 です。 また、出来ればでいいのですが、 ・顧客Noを入力すると特定の仕様が一回で別表に抽出できるような方法が御座いましたら、そちらも合わせてお願いしたいと思っております。 長々と書き綴り、大変申し訳御座いませんが、宜しくお願い致します。

  • エクセルでランダムに抽出後、一つのセルにまとめる方法

    エクセル初心者です。 エクセルのシート1に A列の1行目~10行目にA~Jまでの文字が入力されています。 これをシート2の B列の1~100行目に シート1からランダムで抽出した3つ又は4つの文字を ACE DFG ・・・・ のように埋めるには、どのような式を入れればできるのでしょうか? 文字はだぶらないように抽出したいと思います。 文字はCAEのように、順番が逆になっても構いません。 むしろ時々逆になったりするほうが都合がよいです。 抽出される文字数も、3つだけでなく、ランダムで4つ抽出するときも あるようにしたいです。 オフィス2003を使用しています。 ご回答よろしくお願いします。

  • Excelでデータを抽出

    エクセルでデータベースを作成しました。 このデータベースから目的のものだけを別のシートに抽出したいです。 データベース A ID1 B ID2 C 内容 この内容が100行書かれているとします。 ある20個のIDの内容だけを別のシートに抽出したいのです。 ID1を昇順にならべるとID2は昇順にならないようなIDになっています。 なので、VLOOKUPがつかえません。 ID1から抽出したいもの20個を選んで、シート2へ選んだ内容のID1と内容を抽出 ID2から抽出したいものを20個選んで、シート3へ選んだ内容のID2と内容を抽出 どの様にしたら出来ますか? うまく説明できなくてすみません。 宜しくお願いします。

  • Excelでの文字列抽出

    Excelで文字列の抽出とそれを並べる方法を教えてください。 関数だけを用いて実現できるのか、マクロを使わなければできないのかも分かりません。 この関数をこの様に使えばよいというのを教えていただけると幸いです。 やりたいことは、下記条件で、シート2のB列にシート1のG列~P列までに登録されている担当者名に該当するB列の店名を4店まで抽出したいのです。 分かりづらくて申し訳ございませんが、よろしくお願い致します。 ------------------------ シートが2枚(シート1/シート2)あります。 シート1  B列は4行毎に結合されており、店名が登録されています。  G列~P列までは1行目は担当者名、2,3,4行目は補足情報が登録されています。  シート2  A列に担当者名が入っています。(4行毎に結合しています)  B列にA列の担当者名に該当する、シート1の店名を4店まで登録したい。

  • エクセルのマクロを知りたい

    エクセルで,たくさんのデータが入力された【シートa】があります。 新しく【シートb】を作成して,そこに空白の表(1)~(10)までを作成します。 (ちなみに表(1)は1行から始まり100行まで,表(2)は101行から始まり200行まで・・・・といった感じです) 【シートb】の表(1)には,【シートa】でA列に「1」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。同様に,表(2)には,【シートa】でA列に「2」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。・・・というのを表(10)まで続けます。 上記のような命令をボタン一つで操作できるようなマクロを教えて欲しいのです。 お願いします。

  • VBAでの検索抽出が出来るプログラムを作成したいで

    エクセルのsheet2~8のA2~O2までは項目(sheet2~8の項目は全て同じです。)、A3~データが入力されています。 検索し、その結果の行すべてを抽出できるようにしたいのですがどのようにVBAを作成すれば良いでしょうか? 検索条件は文字列で”注文業者名”、”注文番号”2つの項目で両方の項目または片方の項目で、検索ボックスにキーワードを入力し「検索開始」のコマンドボタンを押して検索が出来るようにしたいです。 漠然とした質問で申し訳ありません。 宜しくお願いします。