- 締切済み
VBA初心者2
度々、申し訳けございません。 教えて下さい。 EXCELでA列のセルの中の文字の一番最後から数えて3番目の文字が5が入っているセルのみ、(3番目の文字が5でない場合は削除しない)その数字の5、1文字だけを削除するやり方もご教授していただければ幸いです。ちなみにA列のセルの範囲は一定ではありません。お手数ですが、お願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 以下のように、Like演算子を使った方法もあります。 "*5??"とすれば、 3文字以上ということになりますから、If Len(c.Value)>=3 Then が必要がなくります。 4つ試してみて、人の作ったものをステップインで、その仕組みを考えてみるのもよいと思います。 Sub TestSample() Dim c As Range, num As Integer Application.ScreenUpdating = False For Each c In Range("A1", Range("A65536").End(xlUp)) If c.Value Like "*5??" Then num = Len(c.Value) - 2 c.Value = Application.Replace(c.Value, num, 1, "") End If Next Application.ScreenUpdating = True End Sub
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
範囲を選択してからマクロ実行 '--------------------------- Public Sub sample() Dim x As Range Dim length For Each x In Selection length = Len(x.Value) If length >= 3 Then if Mid(x.Value, length - 2, 1) = "5" Then x.Value = Application.WorksheetFunction.Replace(x.Value, length - 2, 1, "") End If End If Next End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() d = Range("A65536").End(xlUp).Row For i = d To 3 Step -1 s = Cells(i, "A") If Mid(s, Len(s) - 3, 1) = "5" Then Cells(i, "A").Delete End If Next i End Sub 行やセルの削除は下の行から順次やるほうが、危険が少ない(定石?)。 第3行目からデータが始まるとしてます。 例データA3:A7 aaad5ddd aaassdd ssd5fgg dfgggdfg5sss sssdf 結果A3:A4 aaassdd sssdf
- hana-hana3
- ベストアンサー率31% (4940/15541)
いかがでしょう? Sub del_chr5() Dim Hanni As Range Dim C As Range Set Hanni = Range("A1", Range("A65536").End(xlUp).Address) For Each C In Hanni If Len(C.Value) >= 3 Then If Mid(C.Value, Len(C.Value) - 2, 1) = "5" Then If Len(C.Value) = 3 Then C.Value = Right(C.Value, 2) Else C.Value = Left(C.Value, Len(C.Value) - 3) & Right(C.Value, 2) End If End If End If Next End Sub