- ベストアンサー
エクセルで、ひとつのセルの中に文字列を挿入する方法
エクセルのひとつのセルの中で、 「ABCD-0001」とあるところを 間に「○○-」を挿入して、「ABCD-○○-0001」にしたいのですが、マクロを試してみましたが、相対参照と絶対参照がよくわからず、最初の一行と同じになってしまいます。 (0001から数百あります) 「ABCD」を「ABCD-○○」に置換でもできるのですが、とりあえずマクロを使ってみたいと思って質問してみました。 よろしくお願いします。
- みんなの回答 (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)
ABCD-0001 ABCD-0002 ABCD-0003 を ABCD-○○-0001 ABCD-△△-0002 ABCD-□□-0003 としたい、ということでよかったですか? 間に挿入する ○○ △△ □□ の決定方法が解らないと回答は難しいです。 どこかにリストがあるのですか? 全部異なるのですか? パターンが決まっていますか?
- merlionXX
- ベストアンサー率48% (1930/4007)
データが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)
>「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)
置換のルールが不明ですが 「編集」-「置換」で 「検索する文字列」に「-」を、「置換後の文字列」に「-○○-」を入れて、全て置換にすれば一発かも… マクロで行う場合は、対象とする範囲がrngにあるとすれば For Each c In rng str = c.Value 置き換え処理(←ルールが不明なのでコード化できません) c.Value = str Next c みたいになるのかな? 置き換え処理は文字列演算(Replace( )など)で置き換えるか、正規表現を利用して置き換えるかが手っ取り早いでしょう。
- xls88
- ベストアンサー率56% (669/1189)
↓ここが参考になるかも知れません。 Excel(エクセル) VBA入門:繰り返し処理(For~Next,Do~Loop) http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html
- xls88
- ベストアンサー率56% (669/1189)
現状のマクロを拝見できないでしょうか?
補足
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としたかったのですが・・・。