文字列変換(置換)方法について

このQ&Aのポイント
  • Selection.Replaceを使用して文字を置換する方法について質問があります。
  • 例えば、りんご+みかん+めろんという文字列がある場合、特定の文字列のみを削除する方法を知りたいです。
  • Selection.Replaceでは難しいので別の方法を教えていただきたいです。
回答を見る
  • ベストアンサー

文字列変換(置換)方法について

Selection.Replace を利用して単体の文字を置換することはできるのですが、 例えば とあるセルに りんご+みかん+めろん っていう文字列が入力されていた場合、 Selection.Replace what:="りんご" , replacement:="" をすることによって、結果、 +みかん+めろん にすることはできますが、 ++だけにするようにはできませんでしょうか。 りんご+みかん+めろん+なし+・・・・・っと 20パターンぐらいあるので、 Selection.Replace では難しいのではと思っております。 該当の文字列だけ消す処理をしたいです。 すいませんがお願いします

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

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

レスがないですが、回答番号:No.2もNGですか? >Selection.Replace を利用して単体の文字を置換することはできるのですが、 >20パターンぐらいあるので、 >Selection.Replace では難しいのではと思っております。 現状のコードを提示できますか?

chirorin22
質問者

お礼

すいません。結論パターンが多すぎて断念しました。

その他の回答 (2)

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

「置換」のサンプルコードです。 検索文字列が、A1:A3に入力されている 置換対象セル範囲は、B1:B50 と仮定しています。 Dim c As Range For Each c In Range("A1:A3") Range("B1:B50").Replace c.Value, "" Next c

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

>++だけにするようにはできませんでしょうか。 >該当の文字列だけ消す処理をしたいです。 混乱する書き方です。 ++だけにすればよいのなら Dim c As Range Dim repltxt As Variant Dim i As Integer Dim n As Integer For Each c In Selection repltxt = Split(c.Value, "+") n = UBound(repltxt) c.Value = WorksheetFunction.Rept("+", n) Next

chirorin22
質問者

補足

すいません。書き方が悪かったです。 >++だけにすればよいのなら ⇒ではなく複数の文字列を消す処理をしたいです。 Selection.Replaceで一つずつ作らないとダメでしょうか。

関連するQ&A

  • Excel2003 VBA 「*」を含む文字列の置換方法は?

    セルに「あいうえお あい*うえお」という文字列がある場合 そのセルに対して Cells.Replace What:="あい*うえお", Replacement:="" の処理を実行するとすべて消えます この場合「あいうえお」だけを残すには どのようにすればいいのでしょうか?

  • 文字列の置換

    AファイルのA1セルからBファイルのC1セルにデータを反映させたとします。 その際に以下のように文字列を複数置換させたいのです。 A1セル   C1セル りんご → みかん みかん → ぶどう なし  → 空欄 空欄  → 空欄 上記のようにセルのデータを複数置換することはできるのでしょうか? 又、置換できるならどの関数を使えばよいのでしょうか?

  • エクセルで指定した文字に自動で置換することは可能ですか??

    A1セルに「バナナ」と表示されると下のマクロの記録で作った”置換するマクロ”の「りんご」の部分を「バナナ」に変更し、さらにこの置換マクロを自動実行することはできますか?? Sub Macro1()' Cells.Select Selection.Replace What:="名前(1)", Replacement:="りんご", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("A1").Select End Sub このマクロの記録でなくてもいいんですが、あるセルに置換したい文字が表示された時点でシート内の置換が実行されるようにしたいんですけど・・・・・。 よろしくお願いします。

  • Excelの置換で書式が変わる現象の回避策

    下記のようなマクロで複数の置換をしています。 Cells.Replace What:="★", Replacement:="☆", MatchCase:=True Cells.Replace What:="◆", Replacement:="◇", MatchCase:=True Cells.Replace What:="■", Replacement:="□", MatchCase:=True ・ ・ ・ セル内で改行して文字サイズや色を変えている箇所では置換後1行目の書式に変わってしまいます。 文字だけを置換をしたいのですがこれを回避する方法はあるのでしょうか教えてください。

  • セル内の文字列に複雑な処理をしたい

    セルの中の複数の異なる文字列を以下のように処理したいのですが、Excelの標準の文字列操作の関数で試行錯誤してみたのですが、どうもうまくできませんでしたので、ご存知の方がいらっしゃいましたらご教授ください。VBAで処理しないとできないかもしれませんがよろしくお願いします。 あるリストのC列に備考欄が設けてあり、次のようなデータが入っています。 4/30 みかんを買った(強制改行して) 5/1 りんごを売った 5/2 ぶどうを食べた 5/5 すいかを買った このセルを調べて、 (1) セル内に"みかん"と"りんご"という文字列があったら、これを取り出して、右隣のセルに表示           (結果)⇒ みかん りんご (2) セル内に"みかん"と"りんご"という文字列があったら、これを"A","B"に置き換えて、右隣のセルに表示          (結果)⇒ A B (3) セル内の数値データと"を食べた"、"を買った"、"を売った"を取り除いて、右隣のセルに表示          (結果) ⇒ みかん りんご ぶどう すいか   (4) セル内に"か"を含む文字列があったら個数に関係なく"A"に置換して右隣のセルに表示             (結果) ⇒ A   すべて取り出したい文字列(上の例ではみかん、りんご)や置換したい文字列(A、B)以外の文字列は全てクリアして表示しないようにします。少し複雑ですが、やり方をご存知の方がいらっしゃいましたら、お教えください。

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

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

  • エクセル2003で特殊文字の置換方法

    エクセル2003、XPを使用しています。 エクセルのマクロで置換をしているのですが、 置換対象がCHAR(160)です。 セル上に上のを打ち込むと、実際は違いますが半角スペースに見えます。 特殊文字であっているのでしょうか。 それで、この文字を消したいと思い、以下の通りマクロで記述しているのですが、成功しません おわかりになる方いらしたらよろしくお願いします。 Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

  • 置換した文字色の変更

    シートが2枚あって、sheet(1)の内容を変更するとsheet(2)の内容を検索して置換するマクロを作っています。 sheet(1)で変更された文字を検出して(検出は文字色で判断しています。)sheet(2)にある文字を置換した後。文字色を変更しようとしています。 Sheet(2)の文字は例えばこのように並んでいます。 各文字はsheet(1)のA,B列の内容を合せたものやユーザーが任意に入れた文字を含みます。 A1 上側 右側 A2 下側 左側 A3 両側 A1:A3を選択して、A1の「上側」を「上面」に置換した後、文字色変更したいのです。 ユーザーの入力値が含まれるため、書式や文字列のコピペは出来ません。 なお、文字数は一定では有りません。また、この範囲の検索が終了すると次ぎの範囲を選択し同様の処理を行っています。 現在使っているのはマクロの記録を行ったものを使っています。 a="上側" b = "上面" Selection.Find(What:=a・・・・・・) ActiveCell.Replace What:=a, Replacement:=b, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False この中でReplaceFormatで書式設定を行っているのは判るのですが、ここをどの様にするば希望の文字色(例えば赤)にする事が出来るのでしょうか? また、その方法だとA1セル全ての書式が変わってしまいます。欲を言えば置換後の”上面”だけを変更したいのですがそれは可能でしょうか。 宜しくお願い致します。

  • 特定の文字でReplaceメソッドが動作しません

    Excel2000のVBAで、"-"(マイナス) を "~"(チルダ)に置き換えたいのですが、動作しません。 Selection.Replace What:="-", Replacement:="~" というコードです。 以下のコードは、うまく動作しますが Selection.Replace What:="A", Replacement:="B" Selection.Replace What:="A", Replacement:="~" 以下のコードは、動作しません Selection.Replace What:="-", Replacement:="B" Selection.Replace What:="-", Replacement:="~" どうやら、What:="-" が原因のようなのですが、理由も対処方法もわかりません。 どなたか、ご教授ください。

  • セルに入力した文字を別のシートで置換する方法

    複数置換を行いたいと思い、以下のマクロを作成しました。 If Range("B18") <> "" Then Cells.Replace what:=Range("B18"), replacement:=Range("D18") end if B18のセルが空欄ではない場合、 そのセルに入った文字を検索し、別の文字に変換するというものです。 1つや2つほどであれば、ショートカットキーを使って 置換をしていけば良いと思うのですが、 10項目以上、置換しなくてはならず同時処理を行いたいと思っています。 ただし、その10項目については対象ファイルごとにバラバラで、 統一性がないため、VBAの中に組み込むよりかは、 置換したい文字を各セルに入れていき、置換できればと思い、 マクロの作成を行いました。 ただ、上のマクロでは同じファイルではないと処理ができません。 ActiveSheetを使って処理を行うとは思うのですが、どのように記述してよいか分かりません。 お力添えを頂ければと思います。 上記内容で分かり辛いかもしれませんので、以下に箇条書きします。 1)複数置換を行いたい。 2)Aセルに置換対象の文字を入れ、Bセルに置換したい文字を入れる。 3)実行すると全シート上でA1セルに入力された文字を検索し、B1セルに入力してある文字に置き換わる。 4)これらの処理は同一ファイルで行うのではなく、それぞれ別ファイルで管理をする。 ※対象ファイルと実行データが別々のもの 以上です。 説明が分かりにくく、申し訳ありません。 もしVBAで以上のような処理が可能な場合、ご教授頂けますと幸いです。 (使用しているバージョンは、2003です。)

専門家に質問してみよう