• ベストアンサー

EXCEL 指定の文字以外の文字を指定の文字に置換

EXCELの置換するための関数を教えてください。 A列に画像表示のHTMLを入れているのですが、そのなかの画像サイズが何故か100%以外のものになっているものが見つかりました。 1000件近くあるのですが、100%以外になっている文字列をすべて100%にするための関数の作り方をご教示お願いいたします。 A列の文字列はHTMLなので、パーセンテージ以外にも色々な文字が入っているので、その中の1部を書き換え、という形でお願いいたします。

  • XTAH
  • お礼率61% (98/160)

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

  • ベストアンサー
回答No.7

https://316-jp.com/excel-macro-basis 多分、上記のサイトを読めばOK。で、コピペするのは、次の二つ。 Public Function Xfer100per(ByVal strText As String) As String   Dim I As Integer   Dim L As Integer   Dim P As Integer   Dim strTemp As String   Dim C As String      L = Len(strText & "")   For I = L To 1 Step -1     C = Mid(strText, I, 1)     If InStr(1, "1234567890", C) = 0 Then       P = I       Exit For     End If   Next I   Xfer100per = Left(strText, P) & "100%" End Function Public Function XferPer(ByVal strText As String) As String   Dim I As Integer   Dim N As Integer   Dim strDatas() As String   Dim strReturn As String      strDatas() = Split(strText, "%")   N = UBound(strDatas())   For I = 1 To N     strReturn = strReturn & Xfer100per(strDatas(I - 1))   Next I   XferPer = strReturn & strDatas(N) End Function 利用方法は、式に =XferPer(A1) と書くだけです。 で、出来なかったら、 Q、標準モジュールにユーザー定義関数を登録するには? というタイトルで再質問されたが解決は早いと思いますよ。もしかしたら、365固有の不具合が発生しているのかも知れませんので・・・。 祈、成功!

XTAH
質問者

お礼

出来ました!!!!!VBAの概念すらわかっていなかったので必死に調べたら大丈夫でした。 ありがとうございます。

その他の回答 (6)

回答No.6

【補足】添付図を参照されたし。 先の二つの関数は、標準モジュールに登録して下さい。質問者が行うのは、それだけです。一応、人生で初めてマクロとかを書きましたが、《式方式》でよかったら添付図の通りでOKです。それにしても、XferPer()を書いたのが無駄ではなかったかもですね。

XTAH
質問者

補足

ありがとうございます。 すみません、標準モジュールも調べたのですが、EXCEL365では出てこない状態で、何に、何をどう入力するか、もう少しクリアにご説明いただけると幸いです。 ------------------------- 必死こいてVBAコードを書いて、やっとバグ取りに成功したが・・・。例示の変換は、そんなコードを必要としないもの。私が、ややこしいVBA関数を提示する必要はないと思う。が、そうは言っても、それじゃー、あんまりにも無責任。そこで、書いた関数の一部分を示しておく。それは、複数個のXXX%を100%に変更する関数の中で複数個の中の一つの変換を行うそれ。こんなのは、実に、無用の長物と思う。が、行きがかり上しかたない。 ------------------------- 前半に頂いた上記の文も何をどうすればいいのかも全くわからずパニック状態です。申し訳ございません。 今回頂いた写真の状態にするために私がしなければならないことを箇条書きなどで手順をいただけないでしょうか? お手伝い頂いているのに大変申し訳ございません。 よろしくお願い致します。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.5

セルB1に↓の式を入れて下にコピー。で、如何でしょう? =LEFT(A1,FIND("width=",A1)+6)&"100%""" & RIGHT(A1,LEN(A1)-FIND(" height=",A1)+1)

XTAH
質問者

補足

ありがとうございます、実はA1の中にはタグが1つではなく、その後ろにも10こ近くある状態です。 1つ目はバッチリだったのですが、2つ目以降がうまくいきませんでした。 例のご提示が悪く申し訳ございません。 よろしければ、2つ目以降も変換できる状態の式をいただけますと幸いです。 よろしくお願い致します。 A1には下記のように入っており、それが何列にもなっています。 <img src="https:○○○.jpg" width="124%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="240%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="350%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="214%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="100%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="240%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="350%" height="auto" alt="商品画像"><img src="https:○○○.jpg" width="214%" height="auto" alt="商品画像"> mt2015様のですと、1つ目のタグのみ100%に変換ができておりました。 よろしくお願い致します。

回答No.4

【念のために】全てのコードを示しておきます。  マクロでCallするのは、Xfer100per()ではなくてXferPer()の方です。動作確認が出来ているのは、XferPer()をCallした場合のみです。 Public Function Xfer100per(ByVal strText As String) As String   Dim I As Integer   Dim L As Integer   Dim P As Integer   Dim strTemp As String   Dim C As String      L = Len(strText & "")   For I = L To 1 Step -1     C = Mid(strText, I, 1)     If InStr(1, "1234567890", C) = 0 Then       P = I       Exit For     End If   Next I   Xfer100per = Left(strText, P) & "100%" End Function Public Function XferPer(ByVal strText As String) As String   Dim I As Integer   Dim N As Integer   Dim strDatas() As String   Dim strReturn As String      strDatas() = Split(strText, "%")   N = UBound(strDatas())   For I = 1 To N     strReturn = strReturn & Xfer100per(strDatas(I - 1))   Next I   XferPer = strReturn & strDatas(N) End Function  こんな大袈裟なコードはね。と、思う。

回答No.3

【撤退通知】  必死こいてVBAコードを書いて、やっとバグ取りに成功したが・・・。例示の変換は、そんなコードを必要としないもの。私が、ややこしいVBA関数を提示する必要はないと思う。が、そうは言っても、それじゃー、あんまりにも無責任。そこで、書いた関数の一部分を示しておく。それは、複数個のXXX%を100%に変更する関数の中で複数個の中の一つの変換を行うそれ。こんなのは、実に、無用の長物と思う。が、行きがかり上しかたない。 Public Function Xfer100per(ByVal strText As String) As String   Dim I As Integer   Dim L As Integer   Dim P As Integer   Dim C As String   L = Len(strText & "")   For I = L To 1 Step -1     C = Mid(strText, I, 1)     If InStr(1, "1234567890", C) = 0 Then       P = I       Exit For     End If   Next I   Xfer100per = Left(strText, P) End Function  最後に、確かめもせずに早まって回答したことを陳謝します。なお、これでSub()を書けば、訂正される筈です。が、今回は、別回答を待ったがいいですよ。だって、やることはシンプル。VBAの出番ではないでしょう。

XTAH
質問者

お礼

詳しくありがとうございます、正直全くどこに何をすればよいのかわかりませんでした。 お力を頂いたのに申し訳ございません。

回答No.2

【失礼】添付画像差し替え!

回答No.1

【アドバイス】せめて、サンプル画像の掲載を! まあ、質問の意味がわからん奴は答えるなと言われれば、それまでだが・・・。添付図に似たものを示して貰えれば、考え方もあろうかと・・・。

XTAH
質問者

補足

ありがとうございます、画像の貼り方がわからなかったので、こちらでご説明させて頂きます。 <A列> <img src="https:○○○.jpg" width="100%" height="auto" alt="商品画像"> <img src="https:○○○.jpg" width="240%" height="auto" alt="商品画像"> <img src="https:○○○.jpg" width="350%" height="auto" alt="商品画像"> <img src="https:○○○.jpg" width="214%" height="auto" alt="商品画像"> すべて100%にしたいのですが、上記の様に100%以外の物があります。 それを下記の様にすべて100%に修正したいのです。 <B列> <img src="https:○○○.jpg" width="100%" height="auto" alt="商品画像"> <img src="https:○○○.jpg" width="100%" height="auto" alt="商品画像"> <img src="https:○○○.jpg" width="100%" height="auto" alt="商品画像"> <img src="https:○○○.jpg" width="100%" height="auto" alt="商品画像"> 100%のものを120%に変えたいということであれば 置換で 「100を120にすべて置換」とすればよいのですが、 この逆パターンが出来ないので、関数が必要と考えました。 その方法をご教示いただけますと幸いです。

関連するQ&A

  • エクセルの置換機能について

    (1)エクセル2000でA1~A100まで1000~1099が入力されています。 (2)A101~A200にも同様に1000~1099が入力されています。 〔編集〕→〔置換〕の機能を用いて、(2)の1000~1099を1100~1199に直したいところですが、検索する文字列に「10」、置換後の文字列に「11」とし、「すべて置換」をクリックし置換後の結果を見ると当然(2)の「1010」→「1111」となっています。 このようにならないように「1010」→「1110」なるような置換のテクニックはありますか? 使うテクニックは関数を使わず置換で行いたいのですが、ご存知の方がいらっしゃいましたらお願いします。

  • Excelで文字の置換について

    Excelで文字の置換を行いたいのですが、 ある特定の文字以外をすべて置換する方法を教えていただけませんでしょうか? 例えば、数字の0だけは置換せずに、それ以外の文字(あ、1、aなど)をすべてzに置換するといったようなことしたいのですが、 何か素早く置換できる方法がありましたら教えていただければと思います。 よろしくお願い致します。

  • EXCELで指定の文字にHTMLタグを追加する

    EXCELでHTMLの文字列の入れ替え方をご教示お願い致します。 EXCELでHTMLをつくる~というようなものではなく、EXCEL内で文字列を作る、という内容です。 状況としては、 A1に あああ と入力されており、 修正後はB2に <font size="4" color="FF0000">あいうえお</font>あああ と入力されている状態を作り出したいと考えております。 C2に ="<font size="4" color="FF0000">あいうえお</font>"&A1 と入力すると、HTMLタグ内の「"4"」が反応し、式が成立しなくなってしまったりと、うまく作ることが出来ません。 ご教示お願い致します。

  • 【エクセル】指定した文字以外を「その他」に変える

    指定した文字以外を全て「その他」に変換したいのですが、どうしたらよろしいでしょうか? 例えば・・・ [A列] いちご ばなな りんご いちご と言ったエクセルがあるとします。そして、りんご以外は全て「その他」に変換したいのです。 [A列] その他 その他 りんご その他 できればフィルタを使用して変換するのではなく 【置換】で行いたいのですが可能でしょうか? よろしくお願い致します。

  • エクセルで*を文字として置換したい

    エクセルでアスタリスク(*)を文字として、置換したいのですが、 ワイルドカードとして認識してしまい、うまくできません。 CTRL+Fで使って、置換する文字列を、 "*" や '*'としましたが、だめでした。 どうすればいいのでしょうか。 よろしくおねがいします。

  • タグにはさまれている文字以外を置換したい

    あるマルチバイト文字列に対して、特定の文字を正規表現で置換したいのです。 そのマルチバイト文字列には、htmlの<a>タグが混じっています。(混じっていない場合もあります。) 置換したいのは、<a>タグで囲まれている文字以外の文字なのですが、正規表現としてどのようなパターンにすれば出来るのか悩んでおります。 ------------------------------------------------- //置換前のマルチバイト文字列 "朝一番のコーヒーは<a href="index.html">3時のコーヒーや</a>食後のコーヒーより旨い" //検索・置換対象となる文字列 "コーヒー" //置換を行う文字列 "紅茶" //置換後のマルチバイト文字列 "朝一番の紅茶は<a href="index.html">3時のコーヒーや</a>食後の紅茶より旨い" ------------------------------------------------- ↓こちらを参考にしてみたのですが、ちょっとやりたいことと違うみたいでうまくいきませんでした。 http://www.din.or.jp/~ohzaki/regex.htm#ReplaceOutside ================================================= $string = "朝一番のコーヒーは<a href="index.html">3時のコーヒーや</a>食後のコーヒーより旨い" $pattern = '/((?:\G|>)[^<]*?)コーヒー/'; $result = mb_ereg_replace($pattern, '\1紅茶', $string); echo $result; ================================================= 是非、皆様に力を貸して頂きたく、どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • こんな文字列置換ツールもしくは置換法を探しています。

    こんな文字列置換ツールもしくは置換法を探しています。 共通した文字列「文字列A」を含むHTMLファイルが3つあります。 ファイル名は簡単に「1」、「2」、「3」とします。 この3個のファイルの「文字列A」を 置換候補(たとえば「文字列あ」、「文字列い」、「文字列う」)を指定し、 一括で置換できるツールもしくは方法をご存じの方はお教えいただけないでしょうか? ツールの場合、置換候補をCSVファイルなどで一気に指定できればなお良しです。 よろしくお願いします。

  • < >を含む文字列のエクセルでの置換について

    < >を含む文字列のエクセルでの置換についておしえてください。 < や >を含むhtmlの文字列のSUBSTITUTE置換で悩んでいます。 < や >は数式の大なり、小なりと認識されるので置換ができないということですよね? これを置換するいい方法はないのでしょうか? たとえばhtmlテキストに含まれる<table width="800">という文字を <table width="600"><h1>時計</h1>に置き換えたいというような感じです。 エクセルに詳しくないもので出来るのかどうかよくわかりませんが とても困っているので教えていただけましたら助かります(>_<) よろしくお願いいたします。

  • 1文字だけ置換したい

    エクセル2002を使用しています。 「あ」一文字で存在する文字列を 「え」に置換しようと考えています。 しかし表中には「あ」だけでなく「かあか」「けけああ」 といったように「あ」が含まれる文字列が存在します。 これらは置換の対象外としたいのです。 あくまでも「あ」一文字を置換したいのですが…… どのように置換設定すればよいでしょう? ご意見ください。よろしくお願いします

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

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

専門家に質問してみよう