Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9858 / 13644 ツリー ←次へ | 前へ→

【25083】文字列の検索と抽出について ハル 05/5/19(木) 15:59 質問[未読]
【25086】Re:文字列の検索と抽出について 小僧 05/5/19(木) 16:59 発言[未読]
【25087】Re:文字列の検索と抽出について ハル 05/5/19(木) 18:04 発言[未読]
【25091】Re:文字列の検索と抽出について ponpon 05/5/19(木) 21:54 回答[未読]
【25096】Re:文字列の検索と抽出について ハル 05/5/20(金) 9:43 お礼[未読]

【25083】文字列の検索と抽出について
質問  ハル  - 05/5/19(木) 15:59 -

引用なし
パスワード
   はじめまして。
ひとつのセルに入っている文字列の中から特定の文字列を抽出して、
隣のセルにその文字列だけをコピーしたいと思っています。

オートフィルタのオプションで抽出して手動でコピーしたものを、
マクロの自動記録で実行してみたり、自分なりに色々試してみたのですが
うまくいきません。

もとのセルに入っているデータはバラバラで、抽出したい文字列も行頭や
行間など、一定ではありません。
さらに抽出したい文字列は、全部で10個くらいあります。
データを更新する可能性があるため、できるだけ手作業に頼らないように
したいのですが、どなたかわかる方教えてください。
よろしくお願いします。

    A    B   ・・・・     X          Y
1  コード  名前   ・・・・   好きなもの             2  0001   あきこ  ・・・・  りんご・チョコレート   りんご
3  0002   たかし  ・・・・  すいか・焼肉        すいか
4  0003   はなこ  ・・・・  煎餅 ・大福       (空白)   5  0004   まゆみ  ・・・・  ぶどう          ぶどう
・  ・    ・   ・・・・     ・
・  ・    ・   ・・・・     ・

【25086】Re:文字列の検索と抽出について
発言  小僧  - 05/5/19(木) 16:59 -

引用なし
パスワード
   ▼ハル さん:
こんにちは。

ご提示された内容を整理させてください。

【抽出したいもの】
りんご
みかん
なし
ぶどう
かき
ばなな

【データ】
    X列        Z列
みかん・チョコレート → みかん
りんご        → りんご
なし・焼肉      → なし
煎餅・ばなな     → ばなな
大福         → (空白)
りんご・なし     → ???

こんな感じでしょうか?
あと、文字列に複数の抽出したいものが混じっている場合は
どう処理したらいいのかをご提示して頂けるとありがたいです。

【25087】Re:文字列の検索と抽出について
発言  ハル  - 05/5/19(木) 18:04 -

引用なし
パスワード
   ▼小僧 さん:
初めまして、こんにちは

>こんな感じでしょうか?
そうです。

>あと、文字列に複数の抽出したいものが混じっている場合は
>どう処理したらいいのかをご提示して頂けるとありがたいです。

複数ある場合は、Yにひとつ、Zにひとつという風に分けることが
できれば一番いいのですが・・・。
最初で躓いてしまっていたので、回答がいただければまた自分で
考えてみようと思っていたので質問には載せなかったのです・・・。

関数や、VBAに関しては最近はじめたばかりでまだまだ勉強不足なので、
ご迷惑をおかけするかもしれませんが、ご教授いただければ幸いです。

【25091】Re:文字列の検索と抽出について
回答  ponpon  - 05/5/19(木) 21:54 -

引用なし
パスワード
   こんばんは。
データはX列で、一つの時はZ列、二つの時はY列でよいですね。
多分これでいけると思いますが、
配列の中に、検索する文字列を入れてください。
エラー対策などは特にしていません。

Sub test()
  Dim myAry As Variant
  Dim myR As Range
  Dim r As Range
  
  myAry = Array("りんご", "みかん", "なし", "ばなな", "ぶどう", "かき")
  Set myR = Range("X1", Range("X65536").End(xlUp))
  For i = 0 To UBound(myAry)
   
   For Each r In myR
     If InStr(r.Text, myAry(i)) <> 0 Then
      If r.Offset(0, 2).Value = "" Then
        r.Offset(0, 2).Value = myAry(i)
      Else
        r.Offset(0, 1).Value = myAry(i)
      End If
     End If
   Next
  Next
End Sub

【25096】Re:文字列の検索と抽出について
お礼  ハル  - 05/5/20(金) 9:43 -

引用なし
パスワード
   ponponさん おはようございます。

早速の回答ありがとうございます。
今朝試してみたところ、思っていたとおりの処理ができました。

本当にありがとうございました。

9858 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free