• 締切済み

VBA初心者2

度々、申し訳けございません。 教えて下さい。 EXCELでA列のセルの中の文字の一番最後から数えて3番目の文字が5が入っているセルのみ、(3番目の文字が5でない場合は削除しない)その数字の5、1文字だけを削除するやり方もご教授していただければ幸いです。ちなみにA列のセルの範囲は一定ではありません。お手数ですが、お願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 以下のように、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)
回答No.3

範囲を選択してからマクロ実行 '--------------------------- 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)
回答No.2

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)
回答No.1

いかがでしょう? 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

関連するQ&A