[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列置換で同じ文字を返したい』(佐々木)
お世話になります。ネットから見つけた文字列置換のマクロですが、
11行目〜12行目のように同じ文字列を置換しようとすると2〜3行目のようになってしまいます。どのように修正すればよいでしょうか?
A列 B列
1行目 りんご りんご1
2行目 りんごA りんごA
3行目 りんごA、リンゴ りんご1A、リンゴ1
・
・
・
置換文字列
11行目 りんご りんご1
12行目 りんごA りんご1
Option Explicit
Function MultipleSubstitute(str As String, ruleList As Range)
' 変換ルールの行数繰り返す Dim rowIndex As Integer ' 変換ルールのループカウンター For rowIndex = 1 To ruleList.Rows.Count Dim strSrc As String ' 検索文字列 Dim strTarget As String ' 置換文字列
strSrc = ruleList.Cells(rowIndex, 1) ' 検索文字列を取得 strTarget = ruleList.Cells(rowIndex, 2) ' 置換文字列を取得
str = Replace(str, strSrc, strTarget) ' 文字列置換を実行 Next
MultipleSubstitute = str ' 置換結果をセルに表示 End Function
B1= MultipleSubstitute(A1,$A$11:$B$12)
< 使用 Excel:Excel2019、使用 OS:Windows10 >
ここの物のようだが記事のコメントでの質問を受け付けているようなのでまずは そちらに質問してみては? (ねむねむ) 2021/08/25(水) 11:16
あんま関係ない事でアレなんですが、 気持ち的には、とりあえず引数[str]の手前に[ByVal]付けて欲しい。(落ち着かないデス)
(白茶) 2021/08/25(水) 11:28
>2〜3行目のようになってしまいます このユーザー定義関数ではそれが正しい動作です。 逆にどうなってほしいのか書かないとどう修正していいかわかりません。
置換のリストは上から順に処理されるので、置換する順番も重要です。
検索リストを りんごA ● りんご ● ● りんご1
みたいにいったん絶対使われてない文字に置換して、最後に再度置換するという工夫をしたらどうでしょう (´・ω・`) 2021/08/25(水) 11:59
掲載サイトに質問して、とりあえず今は最後に再度手動で置換する方法でやってみます。
(佐々木) 2021/08/25(水) 14:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.