VBA 指定文字列が出てきたら、左の文字は削除する
お世話になっております。
Excel2003を使用しております。
指定文字列が出てきたら、左にある文字は全て削除したいと思っております。
例)
番号:0001 名前: 佐藤 太郎 趣味:散歩
↓「名前:より左は削除」
名前: 佐藤 太郎 趣味:散歩
また、出来たら指定文字列より右にあるものも削除できたら良いなと思っております。
例)
番号:0001 名前: 佐藤 太郎 趣味:散歩
↓「趣味:より右は削除」
番号:0001 名前: 佐藤 太郎
色々試してみています。
今後もたくさんのプログラムに使っていくことも考え、配列に入れることも考えています。
LeftDeleteMoji=Array("名前:")
RightDeleteMoji=Array("趣味:")
やりたいこととしては、 (例)番号:0001 名前: 佐藤 太郎 趣味:散歩
左から指定文字列手前まで抜き出す とか (例)「名前:」 名前: 佐藤 太郎 趣味:散歩
右から指定文字列まで抜き出す とか (例)「趣味:」 番号:0001 名前: 佐藤 太郎
指定文字列と指定文字列の間を抜き出す とか (例)「名前:,趣味:」名前: 佐藤 太郎
があります。
A列を上から順番に行っていき、
必要ない部分はスルーして、必要な部分のみ抜き出し、
別シートに書き込む。 これを行おうと思っています。
If InStr(.Range("A" & i).Value, NeedData(Num)) > 0 And Len(.Range("A" & i).Value) > 0 then
で文字列が含まれているか確認していたのですが、
配列の設定方法なのか、色々良く分からなくなってしまいまいました。
-------------------------------現在のプログラム
NeedData = Array("", "名前:", "名前:", "趣味:")
For i = 1 To MaxRow '重要データ保存
If Num > UBound(NeedData) Then
Num = 0
End If
If InStr(.Range("A" & i).Value, NeedData(Num)) > 0 And Len(.Range("A" & i).Value) > 0 Then '含む場合の動作
If NeedData(Num) = "" Then
If InStr(.Range("A" & i).Value, NeedData(Num + 1)) > 0 Then
EndData = InStr(.Range("A" & i).Value, NeedData(Num + 1))
ThisWorkbook.Worksheets("回答連絡メール内容").Range("A" & TESTRow) = Left(.Range("A" & i).Value, EndData - 1) '左から指定文字が出てくるまで!
Num = Num + 2
TESTRow = TESTRow + 1
End If
Else
StartData = InStr(.Range("A" & i).Value, NeedData(Num)) + Len(NeedData(Num))
EndData = InStr(.Range("A" & i).Value, NeedData(Num + 1))
ThisWorkbook.Worksheets("回答連絡メール内容").Range("A" & TESTRow) = Mid(.Range("A" & i).Value, StartData, EndData) '左から指定文字が出てくるまで!
Num = Num + 2
TESTRow = TESTRow + 1
End If
End If
Next
ーーーーーーーーーーー-------------------
入力されているデータ(元のデータ)は決まりごとがあり、
必ずその文字データはあります。(順番も合っています)
上記プログラムは、配列が空白だったら、配列の2個目を検索して
右にある必要の無いデータは削除する。 そのような流れにしようと思っていました。
話がそれましたが、もっと良い(分かりやすい)プログラム方法がある気がします。
現状、一応完成?というところまできては居ますが、
もし、失敗した場合、どこが原因がハッキリしない感じになってしまっています。
左から指定文字列手前まで抜き出す (例)「名前:」 名前: 佐藤 太郎 趣味:散歩
右から指定文字列まで抜き出す (例)「趣味:」 番号:0001 名前: 佐藤 太郎
指定文字列と指定文字列の間を抜き出す (例)「名前:,趣味:」名前: 佐藤 太郎
良い方法があれば教えて下さい!
よろしくお願い致します!
お礼
回答ありがとうございます。 出来ました。