- 締切済み
Excel セル内を検索、抽出するには
例えば一つのセルに ”株式会社△△<国内>(生産)” と3つのキーワードが収まっていて、検索すると<国内>で引っかかる行だけを 別のセルまたはシートに抽出するには、どうすればよいでしょか? おしえてください。 ※http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1313466423 上記の質問とは少し違います。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
この抽出は、データオプションの設定やオートフィルタでなければ、配列関数やマクロ になります、関数は既に回答済みなのでマクロは如何でしょうか。 一例です。 仮にデータをA列、E列に抽出しています。 対象シートタブ上で右クリック→コードの表示→以下のコードを貼り付け→F5キー押下 マクロ削除は貼り付けたコードを全削除してその画面を終了して下さい。 Sub sumple() For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Cells(i, "A") Like "*<国内>*" Then cnt = cnt + 1 Cells(cnt, "E").Value = Cells(i, "A").Value End If Next End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
条件をつけて抜き出し問題というのは、エクセル関数では難しいのだ。Googleででも「imogasi方式」で照会し、私以外の回答を見れば判る。こんな難しい式を回答されて、判るレベルならこんなところへ質問しないだろう。 丸写しで結果の確認まで出良いなら、それらの長い難しい式をどうぞ真似したら良い。 ーー それで作業列を使う方法(imogasi方式)を私は書いている。 Sheet1 例データ A列 空きの列D列が作業列 B,C列データは略。 データ 作業列 <-D列 いいいい<国内>ああああ 1 ええい<国内>ああああ 2 おおおいい<国外>ああああ さささ<海外>ああああ いか<国内>ああああ 3 D2セルに =IF(NOT(ISERROR(FIND("<国内>",A2))),MAX($D$1:D1)+1,"") 下方向に式を複写。 結果 上記D列の通り。 <国内>のあるセルに連番を降っている ーー Sheet2で A2セルに =INDEX(Sheet1!$A$1:$C$10,MATCH(ROW()-1,Sheet1!$D$1:$D$10,0),COLUMN()) 横方向C列までに式を複写。 あって方向に式を複写。 結果 いいいい<国内>ああああ ええい<国内>ああああ いか<国内>ああああ #N/A ーー 下の行の方の#N/Aを出さないようにするには、行数ー1がSheet1のD列のMAXの値より超えたら、空白を返すIF関数をかぶせる。
お礼
ちょっと内容が難しくて理解できなかったのですが、解答して頂きありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! オートフィルタではなく他の方法で抽出したい!というコトですよね? 一応そういうコトだとしての一例です。 Sheet1のデータをSheet2に表示するようにしてみました。 ↓の画像のようにSheet2のA1セルに検索文字を入力するとそれが含まれるものを表示しています。 Sheet1に作業列を設けます。 作業列B2セルに =IF(Sheet2!$A$1="","",IF(COUNTIF(A2,"*"&Sheet2!$A$1&"*"),ROW(),"")) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてSheet2のA4セルに =IF(COUNT(Sheet1!B:B)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!B:B,ROW(A1)))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 参考になれば良いのですが、的外れならごめんなさいね。m(_ _)m
お礼
ありがとうございました。ちょっと関数が苦手なので今後参考にさせて頂きたいと思います。
- keithin
- ベストアンサー率66% (5278/7941)
ご覧になった質疑で,単純に検索ワードを「<国内>」だけにして実施すれば実現できます。 ○別の方法 「オートフィルタ」を取り付け,(オプション)で<国内> を 含む 行で絞り込んでコピー貼り付けてやるのが一番簡単で確実です。 ○別の方法 ご覧になった質疑でも引っかかってますが,ご利用のエクセルのバージョンによって出来ること出来ない事が変わります。 ご相談投稿では,ご利用のソフト名は元よりご利用のソフトのバージョンまでしっかり明記する事を憶えてください。 さておき。 Excel2003以降を使っている場合は,Ctrl+Fで検索のダイアログを出し <国内> を「全て検索」します 検索ダイアログの下にヒットしたセルが一覧されるので,ダイアログの中でCtrl+Aして全て選択すると,ワークシート上でも該当するセルが全て選択されます コピーし,別のシートに貼り付けるなどして抽出します。 ○ナンデモかんでも関数じゃなきゃヤダってヒト向け(推奨しません) A1からそういうデータが並んでいるとすると C1に =INDEX(A:A,SMALL(IF(ISNUMBER(FIND("<国内>",$A$1:$A$100)),ROW($A$1:$A$100),999),ROW(C1)))&"" と記入して,コントロールキーとシフトキーを押しながらEnterで入力します 下向けにコピーします。
お礼
ちょっと質問の仕方が悪く、解答を頂いた皆さんに申し訳なかったと思います。 すいませんでした。 編集→検索→検索項目入力→すべて検索で○個のセルが見つかりました、と表示されるのでこれを コピーできれば良いなと思ったのですが、全部を選択する方法が分からなく、 出来ないんだと思い込んでしまいました。 しかし、簡単なことで一番上をクリック、shiftを押しながら一番下をクリック。 これで全部選択、ctrl+cでコピーして、別のところに貼り付ければ良いだけでした。 >検索ダイアログの下にヒットしたセルが一覧されるので,ダイアログの中でCtrl+Aして全て選択する 上記の方法でCtrl+Aを押しても、検索ヒット内のセルだけを選択する事ができませんでした。 しかし自力で答えを出す一番のヒントになりました。 ありがとうございました。 ちなみに間に合わなくて、時間をかけて手作業をしてしまいました。 後からこんな簡単な事だったのかと自分にあきれました。
お礼
せっかくご解答頂いたのに、こちらも理解できません。申し訳ないです。ありがとうございました。