• ベストアンサー

Excel マクロで 特定文字列を一括置換

VB初心者です。 例えばExcel「商品」シートのA列に型式のデータがあって、マクロを使ってすべて次の条件で置換えしたい場合どのようなコードになるのかご教授お願いします。 1) 行頭の「0-」を削除 2)「半角数字」,「-(ハイフン)」,「改行」以外を削除

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

> もうひとつ教えてください。B列の52行からB列の151行まで変換したい場合はどこを変更すればよろしいでしょうか? 値を取り出したり入れたりしている箇所を変更するだけです。 コード中のCells(i, 1) が、シートのi行、1列を示しています。 現在のコードでは、For i = 1 To 10 で、変数iに1~10までの数値を順番に入れています。これで、A1~A10を指定している訳です。 ここをB列の52行からB列の151行を指定するように変更してください。

hikson
質問者

お礼

できました。感激です。今後もっと勉強します。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

正規表現を使ってこんな感じかなぁ……。 A1:A10までを対象にしてます。 Sub Sample()   Dim RE, i   Set RE = CreateObject("VBScript.RegExp")   With RE     .Global = True     .Pattern = "^0-|[^0-9\n-]"     For i = 1 To 10       If Cells(i, 1) <> "" Then         Cells(i, 1) = "'" & .Replace(Cells(i, 1).Value, "")       End If     Next i   End With   Set RE = Nothing End Sub

hikson
質問者

補足

ご回答ありがとうございます。応用を模索していたため回答が遅れて申し訳ありません。 A1:A10までを対象にした場合、うまくいきました。 もうひとつ教えてください。B列の52行からB列の151行まで変換したい場合はどこを変更すればよろしいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロで文字の置換について

    エクセルのマクロを使った文字の置換についてお聞きしたことがありましす。 やりたいイメージは例として添付の画像としてアップしましたが、 ・エクセルシートに英数文字列の表がある(例では2行2列ですが、実際は6行48列ぐらいです) ・その表を各英数文字列の間に半角カンマ","を入れて、メモ帳に貼り付けたい   ※実際メモ帳に貼り付ける動作は手動で行うので、クリップボード上で「各英数文字列    の間に半角カンマ","が入っている状態」で構いません。 ・各英数文字列の最初の2文字は必ず"0a"、その後の英数字は3桁または4桁です。 ちなみに、エクセルシートで英数文字列の表をそのままコピーしてメモ帳でペーストすると 各英数文字列の間にスペース(空白)が入ってしまいます。 その後、メモ帳で置換などを使い半角カンマ","を入れてもいいのですが、そこまでをマクロで行いたいと思っております。 上記のことがそもそもエクセルのマクロで出来るかどか分かりませんが、なにか有用な方法がございましたらご教授お願い致します。  ※使用OS:Windows7、エクセルバージョン:2007

  • Excelマクロにて文字列連結

    現在Excelのマクロにて文字列の連結を行っているのですが、 繋いだ文字列を改行を付けて連結を行いたいです。 セルとセルの中の文字列を改行を付けて連結するにはどうしたらいいのでしょうか? 例 A1セル「あああ」 B1セル「いいい」 C1セル「あああ       いいい」 Worksheets(sheet1).Range("C1").Value = Worksheets(sheet1).Range("A1").Value + Worksheets(sheet1).Range("B1").Value をすると 「あああいいい」と1行で表示されてしまいます。     ↑ ここに改行を入れるにはどうしたらいいのでしょうか? 以上、宜しくお願いします。

  • Excelの置換機能で文字列の部分削除

    Excelの置換機能を使って、あるパターンの文字列の特定の部分のみ削除すると言うことは可能でしょうか? <文字列例> AB01234-56789 のハイフン以下(-56789)のみを削除したい 対象の文字列パターンは、最初の2桁がアルファベットで固定、そのあと数字が5桁(ユニーク)続き、ハイフン、その後ユニークな文字列(数字5桁) さらに言うと、ファイル内にはこのパターン以外の文字列も存在している(ハイフン含む)ので、上記のパターンの文字列のみをマッチングさせ、ハイフン以下を削除したいのです。 やはり、VBAとかで正規表現使わないと無理ですかね?? 数万件の大量のデータの中から上記処理をせねばならず困っております・・ ご教授いただけると幸いです。

  • Excelマクロで置換

    Excelマクロで置換 セルA1に6桁・スペース・24桁の数字が入っています。 最初の6桁に130,397,430,440が含まれているシートを選択 そのシートの中に "ああああ"があったら"ああああい"に "いいいい"があったら"いいいいう"に "うううう"があったら"ううううえ"に と置換をするマクロを書きたいと思っています。 置換する対象の文字列は多いので別マクロで作成し呼び出したいと考えています。 シートは1ブックに30シート程。何シートあるかはブックによって変わります。 現在マクロの記録を使って試行錯誤しているのですが なにぶん初心者なのでなかなかうまくいきません。 どなたかご教授頂ければと思います。

  • エクセルの文字列置換マクロに関するご相談

    下方のマクロを実行することにより、 文字列リストの内容に基づいて、 別シート(作業)内の文字列を変換することができます。 文字列からコード値へ変換することを目的にマクロを埋め込んだのですが、 別シート(作業)の文字列をコード値に変換した際、3桁くぎりのコード値が並んだ場合に、 自動で数値として認識されてしまいます。 ※別シート(作業)のセルを文字列し設定しても発生します。 プログラムで回避手段があるようでしたらご教示いただければ幸いです。 例)文字列リストシート A B さる 10 ぞう 15 ごりら 101 きりん 102 わに 103 かば 104 マクロ実行前の作業シート A さる,ぞう ごりら ごりら,きりん,わに さる,ごりら マクロ実行後の作業シート A 10,15 101 101102103 10101 上記マクロ実行後のシートの3~4行目のように、 カンマが取れることを防ぎ、文字列として代入したい所存です。 <マクロ> Sub 文字列リストに基づき連続して置換する() i = 2 Do x1 = Sheets("文字列リスト").Cells(i, 1) x2 = Sheets("文字列リスト").Cells(i, 2) Sheets("作業").Cells.Replace _ What:=x1, Replacement:=x2, _ SearchOrder:=xlByColumns, MatchCase:=True i = i + 1 Loop Until Sheets("文字列リスト").Cells(i, 1) = "" End Sub ご教示いただければ幸いです。 よろしくお願いいたします。

  • 正規表現を使っての文字列置換。

    ASP(VBScript)環境です。 長音符を半角ハイフンに置換したいのですが、うまくいかないので アドバイスいただけないでしょうか。 対象の文字列が住所を想定しているので、数字の間の長音符のみ ハイフンに置換したいと思っています。 例:ワンダービル1ー2ー3 → ワンダービル1-2-3 予め英数字は半角英数字にしてあります。 こんな感じで変換をしようとしてみましたが ----- '長音符の変換 Set ObjRegExp = Server.CreateObject("VBScript.RegExp") ObjRegExp.Pattern = "[0-9]ー[0-9]" StrHalf = ObjRegExp.Replace(StrHalf, "-") ----- これをかけてみると、「1ー1」が数字もろとも「-」になってしまいます。 問題点を教えていただけないでしょうか。

  • Excel 2007 マクロ 文字列の抽出について

    Excel 2007 マクロ 文字列の抽出について 元データのB列(番号)に5桁、3桁、7桁の数字が入っています。 その番号をSheet2にコピーして貼り付けます。 貼り付ける際に、5桁、3桁、7桁をそれぞれの列に入れます。 Sheet2のB列(番号2)で400番台はF列(種別)に国産 同じくB列(番号2)で900番台はF列(種別)に外国産 を反映するようにしたいです。 どのようなマクロになりますでしょうか。 サンプルがございましたら、お教えください。

  • VBAでの文字列置換

    表題のとおりですが、過去の質問では良い回答が 見当たりませんでした。 ・やりたいこと ”A”->”001” ”B”->”002” ”C”->”003” ”D”->”004” のようにテキストの置換候補があり(置換、置換対象のテキストは全角、半角さまざまです)、 それをExcelのワークシートに適用したいです。 やり方はどういうやり方でも良いです。ただ置換リストは追加、変更する必要があります。 VBAのreplaceを利用した置換マクロを作成すればよいのでしょうか。 当方、Word用の簡単なVBAマクロの作成経験はありますが、 Excelでは利用したことがありません。 ある程度具体的に御教授いただけると助かります。 よろしくお願いします。

  • マクロで全角を一括で半角に置換したいです

    マクロで下記の作業を行いたいのですがよくわかりません。 アドバイスお願いします。 ■作業内容 『Excelでsheetにある全角の文字を一括で半角に置換したい』 ※基本的に半角にできるもの(カナ・英数字・記号)は全て半角にしたいのですが、『~』だけは半角にしたくありません。 ■画面のイメージ ・sheet1にはマクロを組み込んだボタン画面 ・sheet2に全角のデータA ・sheet3にデータAを半角にしたデータA’が返される ■作業イメージ (1)sheet1のボタンをクリック (2)sheet2のデータを半角にしてsheet3に返す (3)『~』を『~』に置換し直す。 すみませんがよろしくお願いいたします。

  • Excel 文字列の中から不要文字だけを削除したい

    以前にも同様の質問をして賢者の皆様から、ご教授いただき快適に使用しておりました。 今回もちょっと苦労しております。お力お貸しください。 Excel 2007で各セルに文字列として入力されている、中間にあるハイフン以降の3文字を 削除した文字列としたい。 数字は先頭から5桁-3桁となっておりますが5桁-のものもあります。(顧客コード) 最終的に5桁で集計を取れればと思っております。 例: 12345-001 ABC株式会社 98765-有限会社ごお商会 等 -XXXを削除し文字列だけで元のセルにセットしたいです。 きっと前回の応用なのでしょうけど、REPLACEやらMIDやら試しましたが良くわかりませんでした。 よろしくお願いいたします。

このQ&Aのポイント
  • 電子ドラムTD-1KPX2に対応するヘッドホンの線が切れました。使っている電子ドラムTD-1KPX2に対応するヘッドホンの型式を教えてください。
  • 電子ドラムTD-1KPX2に対応するヘッドホンの型式は何ですか?
  • ヘッドホンの線が切れたので、電子ドラムTD-1KPX2に対応するヘッドホンの型式を教えてください。
回答を見る

専門家に質問してみよう