• ベストアンサー

エクセルで、ひとつのセルの中に文字列を挿入する方法

エクセルのひとつのセルの中で、 「ABCD-0001」とあるところを 間に「○○-」を挿入して、「ABCD-○○-0001」にしたいのですが、マクロを試してみましたが、相対参照と絶対参照がよくわからず、最初の一行と同じになってしまいます。 (0001から数百あります) 「ABCD」を「ABCD-○○」に置換でもできるのですが、とりあえずマクロを使ってみたいと思って質問してみました。 よろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.7

≪一例≫ Sub test1() Dim rng As Range Dim c As Range Dim myAry As Variant Dim i As Integer myAry = Array("○○", "△△", "□□") Set rng = Range("A1:A3") For Each c In rng c.Value = Replace(c.Value, "-", "-" & myAry(i) & "-") i = i + 1 Next c End Sub

その他の回答 (6)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

ABCD-0001 ABCD-0002 ABCD-0003 を ABCD-○○-0001 ABCD-△△-0002 ABCD-□□-0003 としたい、ということでよかったですか? 間に挿入する ○○ △△ □□ の決定方法が解らないと回答は難しいです。 どこかにリストがあるのですか? 全部異なるのですか? パターンが決まっていますか?

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

データがA列、A1から以降にあり、途中の空白がなければ Sub test01() With ActiveSheet Set tg = Range("A1") 'A1をtgとする Do While tg.Value <> "" 'tgが空白でないかぎり繰り返し If StrConv(Left(tg.Value, 5), vbNarrow) = "ABCD-" Then 'tgの左5文字がABCD-なら tg.Value = Left(tg.Value, 5) & "○○" & Right(tg.Value, 5) '○○を挿入 Set tg = tg.Offset(1) 'tgを一つ下にずらす End If Loop '繰り返し End With Set tg = Nothing End Sub でいけると思います。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

>「ABCD」を「ABCD-○○」に置換でもできるのですが・・・ をマクロの記録で記録して、アレンジ A列にデータがあるとして Sub Macro1() Range("A1", Cells(Rows.Count, 1).End(xlUp)).Replace What:="ABCD-", Replacement:="ABCD-○○-", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False End Sub こんな感じかな

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

置換のルールが不明ですが 「編集」-「置換」で 「検索する文字列」に「-」を、「置換後の文字列」に「-○○-」を入れて、全て置換にすれば一発かも… マクロで行う場合は、対象とする範囲がrngにあるとすれば For Each c In rng  str = c.Value   置き換え処理(←ルールが不明なのでコード化できません)  c.Value = str Next c みたいになるのかな? 置き換え処理は文字列演算(Replace( )など)で置き換えるか、正規表現を利用して置き換えるかが手っ取り早いでしょう。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

↓ここが参考になるかも知れません。 Excel(エクセル) VBA入門:繰り返し処理(For~Next,Do~Loop) http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

現状のマクロを拝見できないでしょうか?

tulipe
質問者

補足

Sub Macro1() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a ' ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "" ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell.FormulaR1C1 = "ABCD-○○-0001" ActiveCell.Offset(1, 0).Range("A1").Select End Sub こんな感じです。。 ABCDは各行同じですが、以降の部分を△△-0002、□□-0003としたかったのですが・・・。

関連するQ&A