• ベストアンサー

【VBA】エクセルで文字置換

いまは1つ1つ手作業でしており時間が大変掛かっています。 VBAでやろうとしたものの挫折しております。 文字の置換を連続して、VBAで自動で出来ないかと思っております。 Sheet1に「商品名」と「商品説明」 Sheet2に「検索する文字」と「置換後の文字」 (やりたいこと) Sheet2の置換方法に従ってSheet1の文字を置換する Sheet2のすべての置換方法をSheet1のすべての商品(商品名、商品説明共に)に対して処理する 置換処理した後は、処理件数をSheet2のC列に入力する 可能であれば、教えて頂きたいと思います。 宜しくお願いします。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (714/1476)
回答No.1

置換して件数を数えようとすると、1セルづつ置換しなければならす、時間がかかります。 多少卑怯なやり方ですが、置換件数をCOUNTIF で数えます。 Option Explicit ' Sub Macro1()   Dim O As Worksheet   Dim RInp As Long   Dim What As String   Dim Replacement As String '   Set O = Sheets("Sheet1")   Sheets("Sheet2").Select   RInp = Cells(Rows.Count, "A").End(xlUp).Row   Application.ScreenUpdating = False   Range("C2:C" & RInp) = "=COUNTIFS(" & O.Name & "!B:C,""*""&A2&""*"")"   Range("C2:C" & RInp) = Range("C2:C" & RInp).Value '   For RInp = 2 To RInp     What = Cells(RInp, "A")     Replacement = Cells(RInp, "B")     O.[B:C].Replace What, Replacement, xlPart   Next RInp End Sub

value100100
質問者

お礼

やりたいことができるようになりました。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>VBAで自動で出来ないか こんな課題は、質問するまでもないタイプです。1ステップ処理では、置換だけやれば良いようだから。 こういうのは、置換後の語句1つに対し1処理をすることになろう。一括というのは表現だけで、内情は検索語の1件ずつを1シート内で見つけ、置換せざるを得ない。1シート内であるだけ、容易い。 置換後の語句を順次変化させて、対象のセル範囲内の、文字列を置換する、だけだろう。 ループ処理に持ち込む。 ・その「順次変化」はFor Nextを使えるタイプではないか。 まず置換対象を1件ずつ、全件漏らさず、重複しないで、捉えるVBAコードを考えること。 別シートにでも(対象語句を順次)書き出して、確認しては。 ・置換は、本来は後先を考える必要はあるが、本件では、必要ないことを確認しておくこと。  (大阪ー>東京、東京ー千葉という置換がある場合、後先によって、最終で、大阪ー千葉いなるものと、ならないものと、多段では、置換作業順序で変わる場合がある。) ・置換のコードなどWEBやVBAの本ですぐ見つかる。マクロの記録でも推測はつく。 1件だけをまずやって見たか? >Sheet2のすべての置換方法 すべての置換方法とは何?すべての置換対象語句のことではないのか。紛らわしい言い方。 ーー シートが2つ出てきているから、それらのセルについて、それらのどちらかを区別する、VBAコードが必要だが、どういうコードになるか、勉強は済んでいるか。 ーー 丸投げ的な回答が欲しいのだろうから、簡単な(簡略化、少数化した)2つのシート実例でも挙げてもらったほうが、回答をしやすい。画像では、参考にしかできない。 画像からデータ起こしは、多数だと、回答者側では、やっちゃおれない。 模擬例を、テキストで(質問に)張り付けてくれれば、コピーー区切り位置でデータが作れる可能性が多い。 ーー 件数の課題は、変数や配列変数を作って、その処理を通ったところで+1すればよいだろう。 検索語(置換前の置換対象語句)と「件数のほしい区分」は同一なのかな。同一であればシートの同行で隣列セルをそれに充てることもできる。

value100100
質問者

お礼

ありがとうございました。

関連するQ&A

  • エクセルVBAで連続して文字置換をしたい

    シート2に「検索する文字」と「置換後の文字」を入力しておく マクロで自動的にシート1の文字列を文字置換していく 置換作業は、シート1の商品全部を対象として、 シート2に入力している文字列を1つずつ置換作業をして 処理した後は、処理件数を残していく。 シート2に入力している文字列の数だけ全部、処理する。 現状は、商品数が約2万個で検索する文字列は100個ほどあります。 (今後はさらに増える予定です。)

  • Excel2016で文字列の一括置換を行うVBA

    Excel中級者です。Windows10, Excel2016で、別の「マスタ」シートにある表に従い、「Data」シートにある文字列を一括置換するVBAを教えていただけますと幸いです。マスタ表は2列 100行で1列目に置換前の語、2列目に置換後の語があります。dataシートは1顧客1行で、20列に商品名が入っており、同シートで一括置換を実行したく存じます。どうぞよろしくお願い申し上げます。

  • 文字の置換のVBA

    こんばんは。 下記の文字列の置換をマクロ(VBA)で出来ますでしょうか。 今は関数(SUBSTITUTE)を繰り返して処理しているのですが、1度で出来る方法がありましたら教えて下さい。 100 ABC-23d=3,4 → 100ABC23D3.4 (1)スペース削除 (2)小文字を大文字へ (3)"-" "=" など数字とアルファベット以外を削除 (4)","→ "." (カンマをドットへ変換) 宜しくお願いします。

  • Excel VBAでの置換の方法について

    Excelの各シートのA5:A104の列に文字列で「●着/●頭」というデータが入力されています。●は半角の1~2桁の数字になります。 例えば、 A5「5着/10頭」 A6「3着/12頭」 A7「6着/7頭」 といった文字列です。これを置換を使って「着」と「頭」を消して A5「5/10」 A6「3/12」 A7「6/7」 と表示されるようにしたいのですが、VBAで良いコードがありますでしょうか。シートは16ページあり、シート名は数字の1~16です。

  • 【エクセル】文字列置換について

    エクセルでの文字列置換についてお教えください。 一部の文字列が含まれていたら、置換するという処理は可能ですか? 例えば、 ”ああああいいいい”  ”ああああうううう” ”ああああええええ” セルに、上記の文字列が、あったとして、 ”ああああ”が、含まれていたら、 すべてのセルを、”おおおお” に、置き換える(差し替える)という処理を想定しています。 よろしくお願いいたします。

  • EXCEL VBAにて、WORDへ置換

    EXCEL VBAにて、WORD文書への文字列置換を行っております。 文字列の置換自体はできています。 が、 置換文字列に「改行」(vbCRやvbLF)をいれて置換すると、 word側での表示が□になってしまいます。 vbCrだけでもvbLFだけでも、vbCRLFでも□と表示されてしまいました。 chr(13) & chr(10)でも□になりました。 EXCEL VBA にて WORDへ文字列置換する場合に送る、改行コード (たぶん「^p」と予測をつけているのですが)を chr関数等での 表示方法を教えてください。 EXCEL2003 WORD2003 よろしくお願いします。

  • Excelファイル連続置換vba

    Excelで複数の文字列を一気に置換するvbaを教えていただけないでしょうか。 Book2の置換リストをBook1のSheet1に完全一致で置換したいのです。 Book1.xlsx:元ファイル Book2.xlsx:置換リスト ※下記のような配列 A列 B列 1 01_1 2 02_2 3 03_3 4 04_4 以上です。 よろしくお願いいたします。

  • エクセル 置換について

    エクセルの中での置換方法を知りたいので、分かる方は回答をお願い致します。 例えばシート1に9ケタの番号が100個あり、その番号には1つずつ異なる商品名が付いています。 シート2には同じく9ケタの番号が200個あり、その番号には異なる商品名が付いています。シート2にはシート1の商品が全て含まれていますが、その他にも違う番号の商品が100個入っている状態です。 やりたい事は、シート1に記載されている商品名がシート2に記載されている商品名と合致していなかったら、シート1の商品名に合わせたい(置換したい)ということです。 どのようにしたら出来ますでしょうか? ちなみに、9ケタの番号は全て数字 商品名は全て英語です。 この場合は半角と全角も合わせておく必要がありますよね? 宜しくお願い致します!!

  • Excelで置換した文字に色をつけたい

    よろしくお願いします Excelで、「対象シート」のB列を参照して、 「置換リスト」シートの一覧のC列の文字列をE列の文字列に置換するようにしています。 「対象シート」のA列には置換前のデータも入っているので、 「対象シート」のA列、B列それぞれの置換前、置換後の文字列に色をつけたいと思っています。 どの文字がどの文字に置換されたかを比較するためです。 置換後のB列のみ下記式で色をつけられたのですが、 該当文字が含まれる、セル内全部の文字の色が変わってしまいました。 該当文字だけの色を変えるにはどうすればよいでしょうか。 また、「置換リスト」シートのC列にある場は「対象シート」のA列の該当文字のみを赤くする方法も教えていただけないでしょうか。 Sub list置換_Click() Dim list_sheet As Worksheet Dim chg_sheet As Worksheet 'こっちは置換する元の文字と置換文字のリスト Set list_sheet = Worksheets("置換リスト") 'こっちは一括置換したい対象のシート Set chg_sheet = Worksheets("対象シート") cnt = list_sheet.Range("c4").CurrentRegion.Rows.Count For i = 4 To cnt srcword = list_sheet.Cells(i, "C").Value repword = list_sheet.Cells(i, "E").Value With Application.ReplaceFormat.Font .Subscript = False .Color = 255 .TintAndShade = 0 End With Columns("B:B").Replace What:=srcword, Replacement:=repword, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=True Next i End Sub よろしくお願いいたします。

  • VBA 置換文字がみつからない時

    お世話になります。 VBAの文字列の置換で教えてください。 replaceを使用したときに、置換対象の文字がなかったら、 「元の値をそのまま返す」という形なのですが、 置換対象がなかったときは、その旨わかるようにしたいのですが、 方法あるでしょうか? ※毎回replaceの前でfind関数であるかないか、調べないと いけないのでしょうか? 何卒宜しくお願いします。

専門家に質問してみよう