• ベストアンサー

エクセルのマクロ(大量データを置換する方法)

マクロについてお詳しい方がいらっしゃれば ご教授頂きたいです。 シート1のA1~C100に入力されているデータすべてを 対象に、 シート2のA1が検索されれば→B1に置換       A2が検索されれば→B2に置換       ・・・・・ というように、別シートを参照して置換をさせたいのですが このようなことはできるのでしょうか。 配列を利用するやり方は、他のご質問で拝見致しましたが 置換する内容が変わりやすいので、編集の利便性を考えて 上記のようにしたいと思っています。 以上、知見のある方、お知恵をお貸し頂けますでしょうか。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 横からお邪魔します。 Sub Sample1() Dim i As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") Application.ScreenUpdating = False For i = 1 To wS2.Cells(Rows.Count, 1).End(xlUp).Row For Each c In wS1.Range("A1:C100") If InStr(c, wS2.Cells(i, 1)) > 0 Then c = Replace(c, wS2.Cells(i, 1), wS2.Cells(i, 2)) End If Next c Next i Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m

yaruri
質問者

お礼

有難うございます。こちらでばっちりOKでした。質問締め切らせて頂きたいと思います。この度は有難うございました★

その他の回答 (2)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

シート2のA1の値が、シート1のA1~C100の範囲で見つかれば シート2のB2の値で、シート1のA1~C100のその場所の値を書き換える と、いうことですか? ご連絡をお待ちしております。 以下はただの落書きです、お気に止めないでくださいね SUB TEST() DIM TAGETRANGE AS RANGE,COUNT-RANGE AS RANGE,SHARTHRERANGE AS RANGE,CHENGERANGE AS RANGE   SET TAGETRANGE = SHEETS("シート1").("A1:C100")   SET SHARTHRERANGE = SHEETS("シート2").("A1")   SET CHENGERANGE = SHEETS("シート2").("B1")   FOR EACH COUNT-RANGE IN TAGETRANGE     IF COUNT-RANGE.VALUE IS SHARTHRERANGE.VALUE _     THEN       COUNT-RANGE.VALUE IS CHENGERANGE.VALUE     END IF   NEXT END SUB

yaruri
質問者

お礼

他の方のご回答で要件が満たせましたので、質問を締め切らせて頂きます。この度はご協力頂きまして有難うございました。

yaruri
質問者

補足

ご回答有難うございます。 先にご回答頂いた keithin様のコードで置換ができました。 が、要件のお伝え漏れなのですが、1つセル内に複数の置換したものがある状況でした。 例)リンゴです!みかんです!いまです!→リンゴでしょ!みかんでし!いまでしょ!  御手間であれば、解説サイトのURLでも構わないのでご教授頂けますでしょうか。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

sub macro1()  dim r as long  for r = 1 to worksheets("Sheet2").range("A65536").end(xlup).row   worksheets("Sheet1").range("A1:C100").replace _    what:=worksheets("Sheet2").cells(r, "A").value, _    replacement:=worksheets("Sheet2").cells(r, "B").value, _    lookat:=xlwhole  ’完全一致で置換  next r end sub みたいな。

yaruri
質問者

お礼

他の方のご回答で要件が満たせましたので、質問を締め切らせて頂きます。この度はご協力頂きまして有難うございました。

関連するQ&A

専門家に質問してみよう