• ベストアンサー

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

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

  • tulipe
  • お礼率85% (344/401)

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

  • ベストアンサー
  • 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

  • エクセル パターン化した挿入方法

    よろしくおねがいします。 OS は、windowsXPです。 エクセル(2003)で、たとえば、 111   11 113 11 ・ ・ ・ ・ この列のなかに一行おきに挿入 111 この間に  11 この間に 113 この間に 11 同じパターンでたとえば、25個とかのデーターを、挿入したいのですが 何かいい方法は、あるでしょうか? 今まで、コピーをして貼り付けをしていたのですが、今回は 莫大な、データーで間違えてしまいました。 それで、やはり、ソフトの方で入力した方が、確実だと、感じています。 マクロでもかまいませんが、教えていただけないでしょうか。 これから、マクロも勉強したいと思いますが、 先に、かたずけてしまいたいので、よろしくお願いします。

  • エクセルの複数のセルを一括で絶対参照にする方法

    エクセルの絶対参照についての質問です。 複数のセルに関数がある時,その複数のセルの関数に含まれる参照先を一括で相対参照から絶対参照に変える方法はありますでしょうか?

  • エクセル2003でのセル内文字列操作マクロ

    あるセルにある文字列を置換し、その置換された文字列を別のセルに移すことをしたいと考えています。 <例> 0000.1111.2222.3333 ↓置換 00:00:11:11:22:22:33:33 (文字列3番目ごとににコロン挿入) 上記のように変換できるマクロメソッド、またロジックなどを教えていただけませんか?また可能でしょうか? (上記の例は逆のパターン(下の文字列から上の文字列への置換)でも結構です。) よろしくお願いします。

  • エクセル セルの中の文字列を二つのセルに分ける方法

    エクセルで一つのセルの中に以下のデータ(日時)があります。 このデータを日と時間に分ける(一括で日と時間を別のセルに移動させる)にはどうすればいいでしょうか? ※データの日と時間の間には、スペースが一つあります。 2009/1/13 15:25

  • エクセルで列または行の挿入が出来ない

    2年ぐらいかけて作成してきた事業計画のエクセルファイルなのですが、タイトルの現象に悩まされています。 具体的には、ある行(列)を挿入しようとすると、「書式を追加できません」というエラーが返ってきて、 確かに1行(列)ずれるのですが、本来空白のはずのセルに元の内容が残った状態で処理されます。 ずれたほうのセルは数式がずれずに下記の例のようなことになり、非常に困っています。 どなたかおわかりの方いらっしゃったら、よろしくお願いします。 セルC3に =E3*F1 と入力してあるケースで、2行目と3行目の間に一行挿入した場合、 本来であれば、 一行ずれたセルC4の数式が =E4*F1 となるはずなのですが、 =E4*F2 となってしまう(コピペをしたような状態)

  • EXCELで文字列の並べかえ

    こんにちは。EXCELの関数を教えてください。マクロは使用しない方法でお願いします。 行いたい内容は、セル内に入力した「1234567の文字列を7654321」や、「abcdをdcba」に並べかえることです。 つまり、EXCELのセル内に入力した文字列を逆から並べ替えたいのです。 お時間のある方、ぜひ教えてください。 よろしくお願いします。

  • エクセルのマクロ自動記録でセル指定がうまくいかない

    エクセルでマクロを記録させて作業を簡略化しようとおもい、現在のセルから相対的にセルを選択してその内容を削除させようとしました。しかし、結果は絶対セルが 常に消えてしまいます。どうすれば相対セルを選択させられるのでしょう 教えてください。

  • エクセルのセル参照とデータ並べ替え

    エクセルで、データを並べ替え後、セル参照の式を作ります。そして、元の通りデータを並べ替えます。そうすると、参照のセルが自動で変わってしまいます。絶対参照にしても、相対参照にしても、思い通りの結果が得られません。 どうしたらよいか簡単な方法を教えてください!!

  • マクロの相対参照、絶対参照

    マクロを使い始めたばかりなんですけど 相対参照と絶対参照で困ってます 任意のセル(A1とする)を選択しておいてマクロの開始 B1のセルをコピー 最初のセル(A1)に貼り付け としたいんですけど B1のセルをコピー、を絶対参照にして 最初のセル(A1)に貼り付け、を相対参照にしてマクロに記録しました そのマクロをC1で使うと A1のセルにB1のセルを貼り付けてしまいます C1でマクロを使えばB1のセルをC1に貼り付けるようにはどうすればいいのでしょう 分かりにくい説明で申し訳ありません

  • エクセル マクロ 列挿入後のカーソル位置

    エクセルで「1列挿入する」だけのマクロを作成した時のことです。 実行させると1列挿入しますが、挿入後のカーソル位置は変わらず、元の列全体が反転表示されてます。ところが、複数シートを選択しマクロ実行すると、列挿入はしますが、カーソルは元の列のひとつ右側の列が反転表示されます。 手作業で1列挿入すると、1シートでも複数シートでも挿入後のカーソルは元の位置です。マクロ作成し複数シートを選択して実行するとカーソル位置が変わるのです。 なぜですか? 特に相対参照でマクロを作る場合、選択するシート数でカーソル位置が変わると困ります。 良い方法はないでしょうか?

専門家に質問してみよう