- ベストアンサー
エクセルで文字列の抽出方法についてお尋ねします。
宜しくお願いします。 エクセルを使用して条件付の文字列の抽出をしたいと思っています。 A列のセルに2つの文字列がスペースを挟んで50行ほど入っています。 また、その中にはひとつの文字列しか入っていないものもあります。 イメージ的には以下のようなものです。 | A | B ------------------------------------- 1|エクセル マウス| -------------------------------------- 2|エクセル ペン | -------------------------------------- 3|エクセル ノート | ------------------------------------- 4|エクセル | ------------------------------------- 上記の例では「エクセル」という文字はひとつのセルですが コレが多くあります。 ここで、2つの文字列の組み合わせだけをB列に表示させることは 出来ますか? また、このパターンが終わった後に、「エクセル」という文字列の代わりに 「ワード」という文字列のものが51行目から続きます。 ここでも2つの文字列の組み合わせと「ワード」単体のものとが あるので、出来れば2つの文字列の組み合わせだけをB列に表示し なおかつ上の方へ詰めて表示したいのです。 分かりづらい質問で申し訳ありません。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
前半は「エクセル」とは限らないのですかね。 限るならA列でソートすれば、2塊に分離するはずです。 ーー そうでなれば、imogasi方式でできます。 作業列B列を使いますが A1:A5 A列 B列 品名 エクセル マウス 1 エクセル ペン 2 エクセル ノート 3 エクセル B2に =IF(ISERROR(FIND(" ",A2)),"",MAX($B$1:B1)+1) と入れて下方向に式を複写する。 上例は全角スペースの場合です。 結果は 上記B列の通り。 Sheet2に行って A1に =INDEX(Sheet1!$A$2:$A$100,MATCH(ROW(),Sheet1!$B$2:$B$100,0),1) と入れて下方向に式を複写する。 結果 エクセル マウス エクセル ペン エクセル ノート エラー値を防ぐにはSheet1のB列のMAXより、Sheet2の行数が多ければ 空白というのを入れるが、上記では略。
その他の回答 (3)
- maron--5
- ベストアンサー率36% (321/877)
◆こんな方法もありますよ =IF(ISNUMBER(FIND(" ",JIS(TRIM(A1)))),A1,"") ★下にコピー
お礼
お礼が遅くなり申し訳ありません。 貴重なお時間を割いていただきまして 本当にありがとうございます。 いろいろな関数の使い方があるのですね。 ありがとうございました。
- tiberius
- ベストアンサー率47% (11/23)
関数でなくて良いならオートフィルタ機能を使用してはいかがでしょうか。 オートフィルタを設定してから、オプションを使って「スペースを含む」文字列を抽出します Bの列に隣のセルが表示されるよう(B2のセルなら「=A2」と入力してコピーして一番下の行まで貼り付ける)にします 上につめるのはそれをまたコピーしてどこかちがうシートにでもはりつけます。 一番単純におもいつく手法です。
お礼
お礼が遅くなり申し訳ありません。 大変参考になりました。 貴重なお時間を割いていただきまして 本当にありがとうございます。
とりあえずB列に=IF(FIND(" ",A1)<>0,A1,"")・・・2行目以下にはコピー でつめる前の状態には出来ますね。 スペースを検索して見つかったらA列の内容を表示しているだけですけど。
お礼
お礼が遅くなり申し訳ありません。 大変参考になりました。 貴重なお時間を割いていただきまして 本当にありがとうございます。
お礼
お礼が遅くなり申し訳ありません。 大変参考になりました。 貴重なお時間を割いていただきまして 本当にありがとうございます。 いろいろな関数の使い方があるのですね。 改めてエクセルの奥深さに驚きました。 ありがとうございました。