• ベストアンサー

ExceL VBAでの置き換え

下記のように同じセルの中に英数字が入力されています。そして3文字目には様々な記号が入っています。 これを必ず-(ハイフン)に置き換える時のVBAでの書き方を教えて下さい。よろしくお願いいたします。 A02/4567 A02/4568 A02/4569 A02/4570 A02*4571 A02/4572 A02/4573 A02*4574 A02/4575 A02+4576

質問者が選んだベストアンサー

  • ベストアンサー
  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

こんばんは 「必ず3文字目」というルールならば、Left関数とRight関数が使えます。 以下はサンプルプログラムです。 Sheet1のA1がタイトル、A2以降にデータが入っていることを想定しています。 Sub Macro1() Dim i ThisWorkbook.Activate Worksheets(1).Select For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Cells(i, "A") = Left(Cells(i, "A"), 3) & "-" & Right(Cells(i, "A"), Len(Cells(i, "A")) - 4) Next i End Sub

tarono0123
質問者

お礼

ありがとうございます。 大変参考になりました。

その他の回答 (1)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

文字数が一定でしたら Sub test() For Each mRange In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) mRange.Value = Left(mRange.Value, 3) & "-" & Right(mRange.Value, 4) Next End Sub でいかがでしょう

tarono0123
質問者

お礼

早速、ありがとうございます。 ただしこれだと A02-/4567 A02-/4568 A02-/4569 A02-/4570 A02-*4571 A02-/4572 と-が入りますが、前の記号が残ってしまいます。 A02-4567 A02-4568 A02-4569 A02-4570 A02-4571 A02-4572 とするには削除しなければならないのでしょうか?

関連するQ&A