エクセル(マクロ)置換 結合されたセルに対しての置換

このQ&Aのポイント
  • エクセルで結合されたセルに対して置換を行う際に問題が発生しています。
  • 現在のマクロでは、結合されたセル内の文字を正しく置換することができません。
  • 明日の昼までに5000個のファイルを置換したいので、解決策を教えていただきたいです。
回答を見る
  • ベストアンサー

エクセル(マクロ)置換 結合されたセルに対しての置換

こんばんは、 今置換用のマクロをこちらで検索して使ってましたが 使用するエクセルのフォーマットが 1セルに入力されてるのではなく、3つのセルを結合されている物に入力されているもので 下記のマクロだと、正しく置換されておりません。 置換変換用のシートと、置換したいシートがある状態で、 下記のマクロだとなぜ結合されたセル内の文字は置換えできないのでしょうか? 結合されてないセルですと、置換はちゃんとされております。 Sub 置換() With ThisWorkbook If ActiveSheet Is .Worksheets(1) Then Exit Sub For i = 1 To .Worksheets(1).Range("A65536").End(xlUp).Row ActiveSheet.Cells.Replace _ What:=.Worksheets(1).Range("A" & i).Value, _ Replacement:=.Worksheets(1).Range("B" & i).Value, _ LookAt:=xlPart, SearchOrder:=xlByColumns Next End With End Sub 明日の昼までに5000個のファイルを置換えするので これが出来ればなぁと思っております。 大変お手数ですが教えて頂けると助かります では、よろしくお願いいたします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

試しに ActiveSheet.Cells.Replace _ を ActiveSheet.Range("A1:Z200").Replace _ のように対象セル範囲をしていすればどうなるでしょうか。

maaaaaaaa
質問者

お礼

ありがとうございます~~~~~!!!! 他のセルの結合されている部分まで全て置換えできました あとはセル範囲を可能な値にしてテストしてみます。 ありがとうございます~~~~~~~~~~m(__)m

関連するQ&A

  • このマクロを少し修正したい

    先日、こちらのサイトで下記のマクロを作っていただきました。 エクセルの置換えシートを使って、別のエクセルシートを一括置換えするマクロです。 ただ、置換えしたいシートのセルが結合していたり、文字の前に空欄が入っていると変換されません。 上記も認識しての置換えは、下記のマクロを修正して可能でしょうか? 修正したマクロを教えていただけると助かります。  With ThisWorkbook   If ActiveSheet Is .Worksheets(1) Then Exit Sub   For i = 1 To .Worksheets(1).Range("A65536").End(xlUp).Row    ActiveSheet.Cells.Replace _      What:=.Worksheets(1).Range("A" & i).Value, _      Replacement:=.Worksheets(1).Range("B" & i).Value, _      LookAt:=xlPart, SearchOrder:=xlByColumns   Next  End With End Sub

  • エクセルで置換リストを別ブックにおいたマクロを作りたい

    置換専用につくったワークシートに A列に検索文字 B列に置換文字を入力したリスト(例えば"Book2.xls"の"sheet1")を作りました。 このリストを使って別のブック内(例えば"Book1.xls")の複数のシート内を一括して置換えがしたいです。 自分で調べてみて下記で置換えはできたのですが、その都度、各シートを選択しなければだめでした。 一括で同ブック内の複数シート内を置換えさせるには、どこを修正したらいいのでしょうか? 見よう見まねの初心者です。 どうぞよろしくお願いします。 Sub 置換()  With ThisWorkbook   If ActiveSheet Is .Worksheets(1) Then Exit Sub   For i = 1 To .Worksheets(1).Range("A65536").End(xlUp).Row    ActiveSheet.Cells.Replace _      What:=.Worksheets(1).Range("A" & i).Value, _      Replacement:=.Worksheets(1).Range("B" & i).Value, _      LookAt:=xlPart, SearchOrder:=xlByColumns   Next  End With End Sub

  • エクセル(マクロ)置換2 置換用リストを1行ずつ読み込むには

    おはようございます。 エクセルは使いなれてますがVBAは記録を使っていて 書き換える程度なので調べてもあまり理解できず困ってます。 先程質問して、結合セルの置換に関しては解決したのですが、 もし簡単にできるのであればと質問させて頂きました。 今置換用のシートは A列に置換前の文字 B列に置換後の文字が入ってます。 そして対象のシートが置換されるようになってるのですが、 これが列ではなく 1行目に置換前の文字 2行目に置換後の文字として処理するのには どこを書き換えればよろしいのでしょうか? 色々試しましたがうまくいきませんでした。 実は、1行目に(A1セルに学生名(1)・A2のセルに住所(1))など20個くらい項目があります 2行目以降に5000行程、学生のデータが入ってます。 各会社の履歴書フォーマットは違うのですが、 入力欄が学生名(1)や住所(1)など入っている項目が同じなので 置換しております。 今は、1行ずつ下のデータを置換シートに貼り付けて 履歴書のシートで置換えをして 新しいファイルにコピーし保存して次のデータという アナログな処理をしております。 同じフォーマット(履歴書)でしたらvlookupなどが使えたのですが。。。 フォーマットによって1つのセルに、学生名(1)と住所(1)が両方入っていたりするので諦めました。 対象セルの場所も形も違いますしね・・・ 列で処理していたマクロを参考に下に貼り付けました。 明日の昼までにあと4000行を処理しなければならなくて困ってます。 お手数ですがどうぞよろしくお願いいたします。 Sub 置換() With ThisWorkbook If ActiveSheet Is .Worksheets(1) Then Exit Sub For i = 1 To .Worksheets(1).Range("A500").End(xlUp).Row ActiveSheet.Range("A1:Z200").Replace _ What:=.Worksheets(1).Range("A" & i).Value, _ Replacement:=.Worksheets(1).Range("B" & i).Value, _ LookAt:=xlPart, SearchOrder:=xlByColumns Next End With End Sub

  • エクセルで置換リストを別ブックにおいたマクロを作りたい

    以下は同一ブック内の「置換」のワークシートに A列に検索文字 B列に置換文字 を書き、置換するマクロなのですが、これですと同一ブック内でしか作業できません。 このリストを別ファイル(例えば"Book2.xls"の"sheet1")に書き、別のファイル(例えば"Book1.xls")で実行するにはどうしたらよいでしょうか。 Sub 置換() For i = 1 To Worksheets("置換").Range("A65536").End(xlUp).Row Cells.Replace What:=Worksheets("置換").Range("A" & i).Value, _ Replacement:=Worksheets("置換").Range("B" & i).Value, _ LookAt:=xlPart, SearchOrder:=xlByColumns Next End Sub

  • 置換マクロ 続きです…

    http://okwave.jp/qa/q8444285.html ↑こちらでご質問をさせていただき、置換シートA列に置換元、B列に置換後データを入れておくことで、置換が一度にできるマクロを作っていただいたのですが、 ブック全体ではなく、現在アクティブなシートだけ、置換をすることは可能でしょうか…? いま、このマクロを実行すると、ブック全体が置換され、元の置換シートのA列や、置換できればしたくないシートもすべて置換されてしまいます。 回答を閉め切ってしまい、新規でご質問となってしまいました。 すみません、、自分でもいろいろと調べてやってみたのですが、 どうしてもよくわからず… どうぞ、よろしくお願い致します。 ● 作っていただいたマクロ ● sub macro1()  dim h as range  for each h in worksheets("置換").range("A1:A" & worksheets("置換").range("A65536").end(xlup).row)   cells.replace what:=h.value, replacement:=h.offset(0,1).value, lookat:=xlpart  next end sub

  • excelのマクロでrangeの選択がうまくいきません。

    excelのマクロでrangeの選択がうまくいきません。 以下のマクロをsheet2に書きました。testcopyは動きますが、testcopy2は動きません。なぜなのでしょうか。どうすればいいのでしょうか。それ以外のマクロの部分との関係から、cellsを使い、数字を使ってrangeの処理をしたいのです。よろしくお願いします。 Sub testcopy() Worksheets("sheet1").Range("B3:C10").Copy Worksheets("sheet2").Range("e5").Select ActiveSheet.Paste End Sub Sub testcopy2() Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy Worksheets("sheet2").Range("e5").Select ActiveSheet.Paste End Sub

  • マクロの中に別なマクロを組み込むには

    よろしくお願いします。 excel2003でマクロを作っています。 Sheet2のC1、D1、E1にセルを赤く塗りつぶす、赤と入力、カラーインデックスの番号を入力するというマクロを作りボタンに割り当てたいと思います。 全部で色が17色あるので、マクロを17個作らなければならないと思うのですが、なるべく簡略化したいと思います。 そこで下記の「赤」というマクロの中に「色」というマクロを取り込みたいのですが、うまくできませんでした。 どうかマクロの中にマクロを取り込む方法を教えてください。 もし下記のマクロがもっとスマートに出来るようでしたら、それも教えていただけると嬉しいです。 VBAは初心者ですがよろしくお願いします。 Sub 赤() irobango = 3 ironamae = "赤" End Sub Sub 色() Worksheets("Sheet2").Range("C1").Select With Selection.Interior .ColorIndex = irobango .Pattern = xlSolid End With Worksheets("Sheet2").Range("D1").Value = ironamae Worksheets("Sheet2").Range("E1").Value = irobango End Sub

  • 2つのマクロを1つにしたい

    いつもお世話になっております。 今回もよろしくお願いいたします。 (1)14のシートがあるのですが、データーのある2から14までのシートを印刷する。 (2)上記のうち、c列のデーターで連続しているセルを結合する。 (1)と(2)を合わせて1つのマクロにしたいのですが、アクティブシート1つにしか(2)のマクロが動きません。 下記のコードの間違いを教えてください。 Sub 契約書目次印刷() Dim Sh As Worksheet Dim t As Long Dim i As Range t = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 'データーのあるシートだけ印刷 For Each Sh In Worksheets(Array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)) If Sh.Range("A2").Value <> "" Then '連続データーセル結合 For Each i In Range("C1:C" & t) If i.MergeArea(1).Value = i.Offset(1).Value Then Range(i.MergeArea, i.Offset(1)).Merge End If Application.DisplayAlerts = False Next i End If Sh.PrintPreview Next Sh End Sub

  • 教えてマクロの記述?

    シート1に記述した内容をシート2に一覧形式で入力するマクロを以下の通り作成しました。 シート1に記述した内容を、別のブックのシートに一覧形式で入力していくマクロに変更するには どのようにマクロの記述をすれば宜しいのでしょうか?マクロの初心者にも分るようにご教授 いただければ助かります。よろしくお願いします。 Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With End Sub

  • Excelでマクロ実行後、編集→置換をクリック→問題が発生!

    Windows XP Home Edition Excel 2002 下記1のマクロの実行後に必ず、 編集→置換をクリックしますと、画像の画面が出ます。 そしてExelを再起動すると、編集→置換をクリックしても問題なく使用できます。 しかし、再度、下記1のマクロを実行後、 ●編集→置換をクリック→画像の画面が出ます。 何回、行ってみても同じです。←このような事はよくあるのでしょうか? 下記1のマクロ自体は、正常に動作します。 しかし、 次の作業で、別のマクロを実行しますと、動作はするのですが、 下記2の一部のコードの「置換」が行われなくなります。 素通りしてしまいます。非常に困ります。 しかし、この「別のマクロ」に On Error Resume Next を追記すると  動作します(コードの「置換」も行われます)。  しかし、この直後も必ず、●編集→置換をクリック→画像の画面が出ます。 下記1の「いい」マクロだけを除いて実行するマクロは問題はありません。 ですから、次の作業で、下記2の一部のコード(置換)も、 On Error Resume Next を追記しなくても正常動作してくれます。 どうも、「下記1」の「いい」に問題があるように思いますが・・・ つなぎ合わせ過ぎでしょうか・・・ 原因がはっきり解かりませんが、ただ、今までに、マクロの実行作業中にあまり、 「編集→置換をクリック」の操作はしたこはないので、発覚することがなかったのかもしれません。 ●をなんとか解決できませんでしょうか? 参考:下記2の#DIV/0! #VALUE! は、数値以外の空白セル 、0 、文字等の為になります。    (これは直接的な原因ではないと思います) 何卒、よろしくお願い致します。   Call 下記1 Private Sub 下記1()   Call いい   Call うう   Call ええ   Call おお End Sub Private Sub いい() Dim i As Integer Dim nin As Range Windows("123.xls").Activate   Sheets.Add after:=Worksheets(Worksheets.Count), Count:=1  For i = 1 To Worksheets.Count - 1  Worksheets(i).Activate  With Worksheets(i)   For Each nin In .Range("B4", .Range("B4").End(xlDown))   If nin.Cells.Value = 1 Then    nin.Offset(0, -1).Copy Cells(2, 6)   End If  Next nin End With   Call かか    Range("A23", Range("A23").End(xlDown)).Copy _    Destination:=Worksheets(Worksheets.Count).Range("IV3").End(xlToLeft).Offset(0, 1) Next i End Sub Private Sub かか() Dim fWord As Integer, fAdd, c   fWord = Cells(2, 6).Value    Range("L3").Copy Range("A23")  With Range("G:G")    Set c = .Find(fWord, LookIn:=xlValues, LookAt:=xlWhole)    If Not c Is Nothing Then     fAdd = c.Address     Do      c.Offset(0, 5).Copy      Range("A65536").End(xlUp). _      Offset(1, 0).PasteSpecial Paste:=xlAll, _       Transpose:=True      Set c = .FindNext(c)      Loop While Not c Is Nothing And c.Address <> fAdd     End If     Set c = Nothing  End With   '次に、同様にH列にも動作させる  With Range("H:H")    Set c = .Find(fWord, LookIn:=xlValues, LookAt:=xlWhole)    If Not c Is Nothing Then     fAdd = c.Address     Do     c.Offset(0, 4).Copy     Range("A65536").End(xlUp). _     Offset(1, 0).PasteSpecial Paste:=xlAll, _      Transpose:=True     Set c = .FindNext(c)     Loop While Not c Is Nothing And c.Address <> fAdd    End If     Set c = Nothing   End With End Sub ーーーーーーーーーーーーーーーーーーーーー '下記2   With Range(Range("A2").End(xlDown).Offset(3, 6), Range("A65536").End(xlUp).Offset(0, 25))    .Replace What:="#DIV/0!", Replacement:="0.0", LookAt:=xlPart, _     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=False    .Replace What:="#VALUE!", Replacement:="0.0", LookAt:=xlPart, _     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _     ReplaceFormat:=False  End With

専門家に質問してみよう