• ベストアンサー

VBA でセルの文字列に"-"等の文字を挿入したい

VBA でセルの文字列に"-"等の文字を挿入したい エクセルでA列に品番がずらっと並んでいる状態です。 この品番がすべて"-"が抜けています。 頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? 例 55548855→55548-55 また 55548-55→55548855 のように"-"を抜く方もわかれば教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

対象のセル範囲を選んで実行します。 Sub InsertMinus()  Dim h As Range  For Each h In Selection   h = Application.Replace(h.Value, 6, 0, "-")  Next End Sub Sub RemoveMinus()  Dim h As Range  For Each h In Selection   h = Application.Replace(h.Value, 6, 1, "")  Next End Sub

ponysaito
質問者

お礼

ありがとうございます。 まさに私の欲しかったものです。 初心者の私にも理解しやすい作りです。 勉強になりました。 どうもありがとうございました。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルにお示しの数値があるとして B1セルに答えを表示させるとしたら Range("B1").Formula="=REPLACE(A1,6,1,"-")" または Range("B1").Formula="=REPLACE(A1,6,1,MID(A1,5,1))"

ponysaito
質問者

お礼

ありがとうございます。 ただ、"-"を抜く方はよかったのですが、 入れる方はエラーが出てうまくいきませんでした。 ありがとうございました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? v = Range("A1", Cells(Rows.Count, "A").End(xlUp)) For i = 1 To UBound(v)   v(i, 1) = Left(v(i, 1), 5) & "-" & Mid(v(i, 1), 6) Next Range("A1").Resize(UBound(v)).Value = v >"-"を抜く方もわかれば教えてください。 With Range("A1", Cells(Rows.Count, "A").End(xlUp))   .Replace What:="-", Replacement:="" End With

ponysaito
質問者

お礼

ありがとうございます。 "-"を入れる方はよかったのですが、 抜く方で、 "1741064300-70"のようにもともと"-"が入っているものを "17410-64300-70"としてその後また"-"を抜くときに全部抜けてしまいました。 私の説明不足でした。申し訳ありません。 でも、これはこれで役に立つと思いますので 大変感謝しております。 ありがとうございました。

  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

一例です。 55548855→55548-55 str1 = "55548855" str2 = left(str1,5) str3 = right(str1,2) str4 = str2 & "-" & str3 55548-55→55548855 str1 = "55548-55" str4 = replace (str1,"-","8")

ponysaito
質問者

お礼

早速のお返事ありがとうございます。 ただ、教えていただいたものを subとendで囲んでもうまくいきませんでした。 初心者の私には何がまずいのかよくわかりませんでした。 申し訳ありません。 ありがとうございました。