Excel VBA質問箱 IV

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

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


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

【40156】セル内のある特定の文字データの抜き出し どらちゃん 06/7/7(金) 16:37 質問[未読]
【40164】Re:セル内のある特定の文字データの抜き出し Jaka 06/7/7(金) 17:41 回答[未読]
【40168】Re:セル内のある特定の文字データの抜き出し ハト 06/7/7(金) 18:08 回答[未読]
【40171】Re:セル内のある特定の文字データの抜き出し Kein 06/7/7(金) 18:23 回答[未読]
【40256】Re:セル内のある特定の文字データの抜き出し どらちゃん 06/7/10(月) 11:04 発言[未読]
【40288】Re:セル内のある特定の文字データの抜き出し Jaka 06/7/10(月) 16:40 発言[未読]
【40290】Re:セル内のある特定の文字データの抜き出し ハト 06/7/10(月) 16:51 回答[未読]
【40297】Re:セル内のある特定の文字データの抜き出し どらちゃん 06/7/10(月) 19:10 お礼[未読]

【40156】セル内のある特定の文字データの抜き出し
質問  どらちゃん  - 06/7/7(金) 16:37 -

引用なし
パスワード
   お世話になります。

以前にセル内の文字の分割についてお尋ねしたことがあって、そのときVBScriptを使って解決したので、それを応用してTRYしてみたのですが、やっぱり出来ないのでどなたか助けてください!

例えば
A1のセルに「第5回」というデータがあったら
A2のセル「第1回 花の会 第5回 森の会」から
「森の会」だけ抜き出してA3に転記
ということがしたいのです。

【40164】Re:セル内のある特定の文字データの抜き...
回答  Jaka  - 06/7/7(金) 17:41 -

引用なし
パスワード
   MJ = InStr(1, Trim(Range("A2").Value), Trim(Range("A1").Value))
If MJ > 0 Then
  Range("A3").Value = Trim(Mid(Trim(Range("A2").Value), MJ + Len(Trim(Range("A1").Value))))
End If

【40168】Re:セル内のある特定の文字データの抜き...
回答  ハト  - 06/7/7(金) 18:08 -

引用なし
パスワード
   Dim TData As String
Dim SData As String
Dim TmpA As String
Dim pos As Long

  TData = Range("A1").Value
  SData = Range("A2").Value
  
  pos = InStr(1, TData, SData, vbTextCompare)
  
  If pos = 0 Then
    MsgBox "対象文字なし"
    Exit Sub
  End If
  
  TmpA = Trim(Mid(TData, pos + Len(SData)))
  
  pos = InStr(1, TmpA, " ", vbTextCompare)
  
  If pos > 0 Then
    Range("A3").Value = Left(TmpA, pos - 1)
  Else
    Range("A3").Value = TmpA
  End If

【40171】Re:セル内のある特定の文字データの抜き...
回答  Kein  - 06/7/7(金) 18:23 -

引用なし
パスワード
   仮に A2 の各文字列が、半角スペース区切りになっているなら・・

Sub Test()
  Dim ShSt As String
  Dim Ary, Ret
 
  ShSt = Range("A1").Value
  Ary = Split(Range("A2").Value, Chr(32))
  Ret = Application.Match(ShSt, Ary, 0)
  If Not IsError(Ret) Then
   If Ret <= UBound(Ary) Then
     Range("A3").Value = Ary(Ret)
   End If
  End If
End Sub

【40256】Re:セル内のある特定の文字データの抜き...
発言  どらちゃん  - 06/7/10(月) 11:04 -

引用なし
パスワード
   ありがとうございます。とても助かります。

ただ、書き漏れていましたが以下のような状況もあり、そうなると欲しい回答になりません。
A1セル: 第1回 花の会第5回 森の会
(↑2番目の「第○回」と前の文字とにスペースがない)
A2セル: 第1回

すみませんどなたかお願いできないでしょうか??

【40288】Re:セル内のある特定の文字データの抜き...
発言  Jaka  - 06/7/10(月) 16:40 -

引用なし
パスワード
   ▼どらちゃん さん:
>ただ、書き漏れていましたが以下のような状況もあり、そうなると欲しい回答になりません。
>A1セル: 第1回 花の会第5回 森の会
>(↑2番目の「第○回」と前の文字とにスペースがない)
>A2セル: 第1回
条件がよく解りません。
A1とA2が逆の場合があるということでしょうか?
応用力がないのなら、もう少し条件を詳しく書いた方が良いです。

【40290】Re:セル内のある特定の文字データの抜き...
回答  ハト  - 06/7/10(月) 16:51 -

引用なし
パスワード
   ▼どらちゃん さん:
>ありがとうございます。とても助かります。
>
>ただ、書き漏れていましたが以下のような状況もあり、そうなると欲しい回答になりません。
>A1セル: 第1回 花の会第5回 森の会
>(↑2番目の「第○回」と前の文字とにスペースがない)
>A2セル: 第1回
>
>すみませんどなたかお願いできないでしょうか??

検索文字が 第○回
『第』、『回』、の文字は抽出したい文字に含まれる事はない

という条件なら↓のようにすればできます

Dim TData As String
Dim SData As String
Dim TmpA As String
Dim pos As Long

  TData = Range("A1").Value '検索元
  SData = Range("A2").Value '検索文字
  
  TData = Replace(TData, "第", " 第")
  TData = Replace(TData, "回", "回 ")
  
  pos = InStr(1, TData, SData, vbTextCompare)
  If pos = 0 Then
    MsgBox "対象文字なし"
    Exit Sub
  End If
  
  TmpA = Trim(Mid(TData, pos + Len(SData)))
  
  pos = InStr(1, TmpA, " ", vbTextCompare)
  
  If pos > 0 Then
    Range("A3").Value = Left(TmpA, pos - 1)
  Else
    Range("A3").Value = TmpA
  End If

【40297】Re:セル内のある特定の文字データの抜き...
お礼  どらちゃん  - 06/7/10(月) 19:10 -

引用なし
パスワード
   みなさま、ありがとうございました。
みなさまのご回答を元に無事解決致しました。

説明も簡単な上に、途中でセルA1とセルA2の値が反対になってしまいご面倒をおかけして申し訳ございませんでした。

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