アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

「ABCD」を「ABCD-○○」に置換でもできるのですが、とりあえずマクロを使ってみたいと思って質問してみました。

よろしくお願いします。

A 回答 (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
    • good
    • 0

ABCD-0001


ABCD-0002
ABCD-0003

ABCD-○○-0001
ABCD-△△-0002
ABCD-□□-0003
としたい、ということでよかったですか?

間に挿入する
○○
△△
□□
の決定方法が解らないと回答は難しいです。
どこかにリストがあるのですか?
全部異なるのですか?
パターンが決まっていますか?
    • good
    • 0

データが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


でいけると思います。
    • good
    • 0

>「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

こんな感じかな
    • good
    • 0

置換のルールが不明ですが



「編集」-「置換」で 「検索する文字列」に「-」を、「置換後の文字列」に「-○○-」を入れて、全て置換にすれば一発かも…

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

↓ここが参考になるかも知れません。


Excel(エクセル) VBA入門:繰り返し処理(For~Next,Do~Loop)
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
    • good
    • 0

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

この回答への補足

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としたかったのですが・・・。

補足日時:2009/04/21 23:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!