- ベストアンサー
Excelで特定の文字を含んだ行を抽出する方法
- エクセルで特定の文字を含んだ行を抽出する方法について教えてください。
- 例えば、エクセルのsheet1のA1からA100に入力された文字から、特定の文字を含む行を抽出することは可能でしょうか?
- 具体的には、sheet2のA1に抽出したい文字を入力し、sheet2のA2以下には特定の文字を含む行を抽出するという操作を行いたいです。
- みんなの回答 (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関数を使用した方法でも、処理に要する待ち時間は許容範囲内ではないかと思います)
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
シート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で入力(←忘れずに操作すること)し,下向けにつるつるっとコピーして入れておく。
お礼
ご回答ありがとうございます。 上記の方法を試して、うまく抽出することができました。 シンプルで良いと思いました。 すごく感謝しております。 ありがとう御座いました。
- aokii
- ベストアンサー率23% (5210/22062)
色々とややこしいので、データのフィルタのテキストフィルタで指定の値を含むで「あ」を含む行だけを抽出てはいかがでしょう。
お礼
ご回答ありがとうございます。 ご指摘の通り、フィルタをつかうと簡単だと思いました。 感謝しております。 ありがとう御座いました。
お礼
ご回答ありがとうございます。 ネットで方法を検索しながら試していましたが、知識のなさに諦めかけていました。 上記の方法を試して、うまく抽出することができました。 感謝、感謝です。 ありがとう御座いました。