• ベストアンサー

【Excel】文字が入力されている複数のセルに特定の文字を一気に追加できますか?

Excel2003を使用しています。 C7:C38に文字が入力されています。 それぞれのセルに入力されている文字のあとに続けて、特定の文字、例えば“[変更分]”と入力したい場合に、それを関数やマクロを使うことで、一気に入力することってできますか? C7:C38に入力されている内容(文字)も文字数もバラバラです。 よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.8

>この固定範囲を複数設定することはできますか? 色々な方法があるでしょうが、一回こっきりということで。。。 --------------------------------------------------------- Sub Test222()  Dim R As Range  Dim myArea As Range  Set myArea = Union(Range("A3:B6"), Range("C5:D10"), Range("F2:F8"))  For Each R In myArea    If R.Value <> "" Then      R.Value = R.Value & "【変更分】"    End If Next R End Sub ----------------------------------------------------- 範囲が多くて一行が長くなる場合は、  Set myArea = Union(Range("A3:B6"), Range("C5:D9"), Range("F2:F8"))  Set myArea = Union(myArea, Range("H5:H7"), Range("J3:J8))   このように、前の行のmyAreaごと結合(Union)すればいいです。  

rx-z5815
質問者

お礼

おはようございます。 再度の回答ありがとうございます。 こちらのコードで今回希望していたことがすべて出来ました! 今回、『Union』を使用したのは初めてでしたので、勉強になりました。 ありがとうございました。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんばんは。 >この固定範囲を複数設定することはできますか? 以下は、固定範囲ではなく、ユーザーオプションです。 ただ、これ以上は、手を加えたくないなっていうか、製作者の意図が伝わらない場合は、質問者さんの目的が見えていないことが多いので、手を加えないほうがよいのですね。時には、掲示板でも、こういうのを作るっていうことだけです。単に参考までです。別に、単に範囲を決めておいて、ループでまわすだけなら、VBAの初歩の初歩です。 Sub EditCellsText2() Dim r As Range Dim cl As Integer Dim strText As String Dim c As Range With Application  On Error Resume Next  .DisplayAlerts = False  Set r = .InputBox("変更するセルの範囲を選択してください" & vbCrLf & _    "飛び範囲の場合は、"", ""(コンマ)でつないでください", "セル選択", Type:=8)  .DisplayAlerts = False  On Error GoTo 0    If r Is Nothing Then Exit Sub  r.Select  strText = .InputBox("セルに追加する文字を入力してください。", "文字入力", Type:=2)  If strText = "False" Or strText = "" Then Exit Sub      If MsgBox(strText & " を選択範囲の文字列の後に入れます。よろしいですか?", vbOKCancel) = vbCancel Then Exit Sub  .ScreenUpdating = False  For Each c In r   If VarType(c.Value) = vbString Then     c.Value = c.Value & strText   End If  Next c  .ScreenUpdating = True End With r.Cells(1).Select Set r = Nothing End Sub

rx-z5815
質問者

お礼

おはようございます。 再度の回答ありがとうございます。 こちらのコードだと、追加したい文字をその都度ダイアログボックスに入力するので、コードを変更することなく文字を追加でき、他でも利用できそうです。 ありがとうございました。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.6

◆こんな方法はいかがでしょう ◆表示形式をユーザー定義で、 @"変更分"

rx-z5815
質問者

お礼

回答ありがとうございます。 今回は表示のみの追加では不都合がありますので、実際に入力する方法でいきたいと思います。 また機会がありましたら、よろしくお願いします。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.5

一回こっきりでしょうからあっさりと。 例えば、C7~I38の範囲で未入力セルを除く場合は -------------------------------------------------- Sub Test()  Dim R As Range  For Each R In Range("C7:I38")    If R.Value <> "" Then      R.Value = R.Value & "【変更分】"    End If  Next R End Sub ------------------------------------------------------- UsedRangeを使う方がシンプルですが、特定文字を追加したくないセルもあるでしょうから、固定範囲がいいでしょうね。  

rx-z5815
質問者

お礼

こんばんは。 早速、教えていただいたマクロを実行してみましたところ、希望していることができました。ありがとうございました。 >特定文字を追加したくないセルもあるでしょうから、固定範囲がいいでしょうね。 そうなんです!おっしゃるとおり一回こっきりで、特定文字を追加したくないセルもありますので、固定範囲がいいのですが、この固定範囲を複数設定することはできますか? マクロに関しては、まだ勉強し始めてそう長くないので、どこをどうすればいいというのを教えていただけると助かります。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 設問を勘違いしていなければ、マクロでは、こういうことになりますね。このマクロは1列ごとで、文字列のある範囲のセルをすべて変更しようとします。 '標準モジュールのみ '------------------------------------------- Sub EditCellsText() Dim r As Range Dim cl As Integer Dim strText As String Dim c As Range With Application  On Error Resume Next  .DisplayAlerts = False  Set r = .InputBox("変更する列の任意のセルを選択してください", "セル選択", Type:=8)  .DisplayAlerts = False  On Error GoTo 0    If r Is Nothing Then Exit Sub  cl = r.Cells(1).Column '列数    strText = .InputBox("セルに追加する文字を入力してください。", "文字入力", Type:=2)  If strText = "False" Or strText = "" Then Exit Sub    Range(Cells(1, cl), Cells(65536, cl).End(xlUp)).Select  If MsgBox(strText & " を選択範囲の文字列の後に入れます。よろしいですか?", vbOKCancel) = vbCancel Then Exit Sub  .ScreenUpdating = False  For Each c In Range(Cells(1, cl), Cells(65536, cl).End(xlUp))   If VarType(c.Value) = vbString Then     c.Value = c.Value & strText   End If  Next c  .ScreenUpdating = True End With Set r = Nothing End Sub '-------------------------------------------

rx-z5815
質問者

お礼

こんばんは。 回答ありがとうございます。 作っていただいたマクロを実行してみました。 希望することは、ほぼ出来ました。列ごとで文字列のある範囲のセルをすべて変更しようとするマクロとのことでしたが、質問文で書いているC7:C38というのは表の一部でして、列全体に特定の文字が追加されると、列のタイトルにまで文字が追加されてしまいます。 『複数の固定範囲』ということではできないでしょうか? コードの一部を変更したらできるかなと思って、コードを見ていたのですが、どこをどうしたらいいのかがワカリマセン。。。 もしよろしければ、アドバイスくださると助かります。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

表示だけでいいなら 「セルの書式設定」「表示形式」で「ユーザー定義」を選択して 「@"[変更分]"」 とすれば入力した文字は 「*******[変更分]」のようになります。 数式だとD7に =C7&"[変更分]" としてD38までコピーしてから D7:D38をコピーして、C列に「編集」「形式を選択して貼り付け」で「値」を選択してOKしてください。 不要のD7:D38を削除すれば終了です。

rx-z5815
質問者

お礼

回答ありがとうございます。 表示形式のユーザー定義を使用することで、見た目だけなら簡単にできますね。勉強になりました。 ただ、今回の場合は、この特定の文字が入っているセルを集計したりもするので、実際に入力する方法でいきたいと思います。 教えていただいたユーザー定義を使用する方法は他で利用できそうなので、大変参考になりました!ありがとうございました。

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

もし隣のD列が空いていれば、D7に =C7&"[変更分]"と入力し、D38までドラッグして式をコピーします。 これでD7~D38にそのように表示されたと思います。 次ぎに、D7~D38を範囲選択してコピーし、C7:C38に値貼り付けすればOKです。

rx-z5815
質問者

補足

早速のご回答ありがとうございます。 No.1のご回答に対して補足させていただいたのと同じ内容になりますが、回答いただいた方法は私も考えました。 質問文にはC7:C38に文字が入力されていて… としか書きませんでしたが、実はこのC7:C38が1ページ分で、横へ同様の書式で7ページ分ありまして、近いセルで空きの列もありませんので、今回はできれば、作業列を使用しない方法でいきたいと思います。 説明が足りず、お手数かけて申し訳ありません。

noname#165268
noname#165268
回答No.1

例えばD列のD7に「=C7&"追加したい文字列"」と式を入れD38まで式をコピー その後D7:D38をコピーしC7に「形式を選択して貼付け」で「値」を選択して 貼り付けてはどうですか?

rx-z5815
質問者

補足

早速のご回答ありがとうございます。 回答いただいた方法は私も考えました。 質問文にはC7:C38に文字が入力されていて… としか書きませんでしたが、実はこのC7:C38が1ページ分で、横へ同様の書式で7ページ分ありまして、近いセルで空きの列もありませんので、今回はできれば、作業列を使用しない方法でいきたいと思います。 説明が足りず、お手数かけて申し訳ありません。

関連するQ&A