• ベストアンサー

【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% (7418/18948)
回答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

  • Excel2007で、特定のセルの文字列により、特定のセルの背景色を変

    Excel2007で、特定のセルの文字列により、特定のセルの背景色を変更したいのでですが、どのようにすれば良いでしょうか? 例として、B5セルの入力文字列が「誕生日」の場合、C5~L5のセル背景色を"青"にしたい、といった感じです。 アドバイス頂ければ幸いです。

  • excel2007 関数入セルへの文字入力について

    excel2007を使用しています。  関数が入っているセルへ文字入力をすると、関数が消滅してしまします。 関数を残したまま、そのセルに文字もかけるという機能はありますか? (※コメント機能 以外で) よろしくお願いします

  • マクロでExcelのセルに任意の文字列を追加するには?

    Excel2003 を使用しています。 文字列の入ったセルに任意の文字列を追加するマクロを 作りたいのですが、どのように記述すればよいのでしょうか? 例えば、郵便番号に〒を文字列の頭に追加したい場合です。 元のセルに入力されている文字列が 111-1111 として、マクロで、 〒111-1111 と同じセルに追記したいのです。 ご助言の程、どうぞよろしくお願いします。

  • excel_特定のセル範囲で同じ文字列が有ったら色

    マクロ初心者です。 excel2002マクロ_特定のセル範囲で同じ文字列が有ったらその数によりセルを色分けしたい 特定のセル範囲で文字列が入っているところと空欄のところがあります。 空欄のところには、後から文字列が入るところと空欄のままのところがあります。 その範囲内で同じ文字列があった場合、2個の時、3個の時、4個の時、5個、6個、7個、8個、9個、10個以上の時に、それぞれ決めておいた色でセルを色分け表示したいです。 文字列の順番はランダムです。 excel2002なので、3種類までなら条件付き書式で設定できるのですが、それを超える場合は設定できません。 それで、これをマクロで設定できるでしょうか。 条件付き書式で設定した場合は、文字列を入力した時点でセルの色はすぐに反映されますが、マクロの場合もそのようにすることは可能でしょうか。 よろしくお願いします。

  • 【Excel】特定の文字間の数字を取り出す

    Excel2003を使用しています。 あるセルに「●●●A9B××…」と入力してあった場合、AとBの間にある数字“9”を取り出すにはどうしたらいいでしょうか? 全体の文字数は変化しますが、AとBという文字は必ずあって、その間にある数字だけを取り出して、それを別の計算で使用したいのです。数字は1桁か2桁のいずれかですが、関数の組み合わせ等で可能でしょうか? よろしくお願いします。

  • エクセルでセルに入力されている特定の文字を数える関数はありませんか

    エクセルでセルに入力されている特定の文字を数える関数を探しています。 例えばセルに AAABCC ABC AA と入力されていたら別のセルの表に A B C 3 1 2 1 1 1 2 0 0 と表示させたいのですが。 何か方法はありますでしょうか。

  • 特定のセル範囲で4文字以上入力されているセルの数をカウントしたい

    特定のセル範囲で4文字以上入力されているセルの数をカウントしたいと思っています。 VBAで記述すれば簡単なことだと思いますが、これくらいなら関数でもできそうだと思い チャレンジしてみましたが挫折しました…。 関数の引数に「A1:C5」などという感じで範囲を指定する記述で できれば短くシンプルな記述を希望しています。 よろしくお願いします。

  • Excel 2003 セルの中に特定の文字が入力されている場合に、その数をカウントする方法

    どなたか教えて下さい。 エクセルのセルに特定の文字が入力されている場合に、そのセルの数を返してくれるような関数の設定があれば教えて頂きたく思います。 例) A00001 A00002 A00003 B00006 C00004 D00009   ↓ A:3 B:1 C:1 D:1 このように返したいのですが…?

  • Excelで未入力セルに一括で特定の文字を

    Excelについての質問です。 未入力セルに一括で特定の文字を入れたいのですがそんな関数をご存じないでしょうか? セルが未入力(空白)の場合、一括で「,*」を入れる、ということをしたいのです。 よろしくお願いいたします。

  • Excel2007で、特定のセルに入っている文字列と同じ名前の(同じブ

    Excel2007で、特定のセルに入っている文字列と同じ名前の(同じブック内の)シートの特定のセルの内容を引くにはどうしたらよいのでしょうか。 状況を具体的に申し上げますと、 シートのA1のセルに「伝票」という文字列が入っているとします。A2のセルに、「伝票」という名前の同一ブック内のシートのC3のデータを自動転記したいのです。 どなたかおわかりでしたら、ご教示いただけませんでしょうか。どうぞよろしくお願いいたします。

専門家に質問してみよう