- ベストアンサー
< >を含む文字列のエクセルでの置換について
< >を含む文字列のエクセルでの置換についておしえてください。 < や >を含むhtmlの文字列のSUBSTITUTE置換で悩んでいます。 < や >は数式の大なり、小なりと認識されるので置換ができないということですよね? これを置換するいい方法はないのでしょうか? たとえばhtmlテキストに含まれる<table width="800">という文字を <table width="600"><h1>時計</h1>に置き換えたいというような感じです。 エクセルに詳しくないもので出来るのかどうかよくわかりませんが とても困っているので教えていただけましたら助かります(>_<) よろしくお願いいたします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
3番です。勘違いしてました。 つまり、図のような感じですかね? 上2行はREPLACE、FIND、LENを提案してしまったのでそれらを使ってます。 =REPLACE(A2,FIND(B2,A2),LEN(B2),C2) こんな感じの式を入れてます。 下2行はSUBSTITUTE関数を使ってます。 =SUBSTITUTE(A6,B6,C6) こんな感じです。 要するに・・置換前、置換後の文字列を、セルに文字列として入力しちゃえば 式の中で文字列が云々考えなくて済むから楽ですよ、ってことです。 ちなみに、強引にいくなら =SUBSTITUTE(A6,"<table width="&"""800"""&">","<table width="&"""600"""&"><h1>時計</h1>") こんな感じで上手くいくかもしれません。
その他の回答 (6)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 何か、#2様がご指摘されていますが、私も、テキスト・エディタでダメなら、HTMLエディタを使えばよいのでは?ファイルは、HTML ファイルだから、Excelでわざわざ、関数を使いながらするというのは、ややこしい上に、ありえないような考え方だからです。関数で作ってというのは、二度手間です。何か、ひとつの型に、どっぷりとハマり込んでしまったようにお見受けします。 順番で置換するなら、ともかく、リストを作っておいて、VBAで、例えば正規表現をつかいながらとか、パターンを探して、中身を置換してしまえば早いと思います。そういう方法なら、ここの回答者なら、誰でも作れると思います。
- tsubuyuki
- ベストアンサー率45% (699/1545)
5番さま、ご指摘ありがとうございます。 ですが、 > ANo.4様の関数は「"」が1個足りません。 何を以て「足りない」とおっしゃるのか、甚だ疑問です。 実際に打ち込んで確認されましたか?検証されましたか? 私が提示した式と5番さまが提示された式を 「上下(B1セル・B2セル)に並べて、結果を目視しました」が、 得られた結果に相違は発見できませんでした。 5番さまが提示された式、 =SUBSTITUTE(A1,"<table width="&""""&"800"&""""&">","<table width="&""""&"600"&""""&"><h1>時計</h1>") 私が提示した式 =SUBSTITUTE(A1,"<table width="&"""800"""&">","<table width="&"""600"""&"><h1>時計</h1>") おそらく5番さまは「"」と言う文字列と「800」と言う文字列を別に考えて、 「"<table width="」&「""""」&「"800"」&「""""」&「">"」となさったのでしょう。 対し、私の提示した式では「"800"」と言う文字列で考えているので、 「"<table width="」&「"""800"""」&「">"」としています。 見づらいですが、図を入れておきます。 ちゃんと処理されていると思うのですが。 > 質問者さま 回答欄を汚してしまいました。 お詫び申し上げます。
- kagakusuki
- ベストアンサー率51% (2610/5101)
ANo.4様の関数は「"」が1個足りません。 例えば、元となる文字列がA1セルに入力されていて、 <table width="800"> を <table width="600"><h1>時計</h1> に変換されるのでしたら、次の様な関数となります。 =SUBSTITUTE(A1,"<table width="&""""&"800"&""""&">","<table width="&""""&"600"&""""&"><h1>時計</h1>") 尚、「<table width=」を含まない場合であっても、「"800">」の部分を「"600"><h1>時計</h1>」に置換する場合には、次の様な関数となります。 =SUBSTITUTE(A1,"800"&""""&">","600"&""""&"><h1>時計</h1>") 後、 >たとえばhtmlテキストに含まれる<table width="800">という文字を <table width="600"><h1>時計</h1>に置き換えたいというような感じです。 とありますが、「800」の部分は「600」に置き換えるので間違いないのでしょうか?
補足
アドバイスありがとうございます。 エクセルには本当弱いのでアドバイスいただけて助かりました! 何とかうまくできました。 ありがとうございました。
- tsubuyuki
- ベストアンサー率45% (699/1545)
REPLACE、FIND、LEN などの関数を組み合わせると出来るかもしれません。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
ん?、エクセルでナニヲ?? たとえば、テキストのhtmlに含まれる、<table width="800">という文字を、 <table width="600"><h1>時計</h1>、に置き換えたいというような感じ、の場合は、 普通のテキストエディタで検索・置換、をお願いしたい!!
補足
説明不足ですみません。 A1の文字列には<table width="800">が含まれていて、B1は<table width="600"><h1>時計</h1>です。 そのA1の<table width="800">という部分を<table width="600"><h1>時計</h1>と置き換えたく A2の文字列には<table width="800">が含まれていて、B2は<table width="600"><h1>りんご</h1>です。 そのA2の<table width="800">という部分を<table width="600"><h1>りんご</h1>と置き換えたく というように行によって置き換えたいもの(B列)が変わるんです。 ですのでSUBSTITUTE関数を用いるのが適当だと考えたのですが… 何か解決策はありますでしょうか?
SUBSTITUTE関数を使わずに、Excelのメニューから編集・置換を使えばいいのでは? 例えば =IF(A1>B1,"OK","NG") のような数式は、数式として成り立たない置き換えをすると計算式エラーになりますが 最初から文字列として扱っている<>などの記号は自由に置き換え可能です。 検索する文字列<table width="800"> 置換後の文字列<table width="600"><h1>時計</h1> Excelにhtmlテキストを読み込んだ段階で文字列ならば問題ないと思うのですが。 ご参考まで。
補足
説明不足ですみません。 A1の文字列には<table width="800">が含まれていて、B1は<table width="600"><h1>時計</h1>です。 そのA1の<table width="800">という部分を<table width="600"><h1>時計</h1>と置き換えたく A2の文字列には<table width="800">が含まれていて、B2は<table width="600"><h1>りんご</h1>です。 そのA2の<table width="800">という部分を<table width="600"><h1>りんご</h1>と置き換えたい というように行によって置き換えたいもの(B列)が変わるんです。 ですのでSUBSTITUTE関数を用いるのが適当だと考えたのですが… 何か解決策はありますでしょうか?
補足
ありがとうございます! >下2行はSUBSTITUTE関数を使ってます。 =SUBSTITUTE(A6,B6,C6) こちらでうまくいきました!! SUBSTITUTE関数の「検索文字列」というところに 置き換えたい文字をそのまま入力していたのがまずかったようです。。 おっしゃられるようにセルをそのまま選択すればいいのですね! セルをそのまま選択すれば<や、>が入っていても文字列とみなしてくれる ということなんでしょうか?? どちらにしろうまくいって助かりました♪ 本当にありがとうございます!