質問

STRINGS を置き換える必要がありますが、これまでのところ単語のみを置き換えることができました。コードは説明列を通過し、リストのすべてのシーケンスを置き換えることになっています。アイデアは、略語を使用することです(新しい価値観) 完全な単語ではなく (古い価値観).

隣接する (スペースなしの) 単語や文字などが存在するたびに、コードは失敗します。なにが問題ですか?ありがとう!!!

Sub ReplaceWords_BUT_Need_ToReplaceStrings()

    Application.ScreenUpdating = False

    'This macro works with separated words only. Eliminate hyphens etc before applying this macro.

    Dim r As Range, A As Range
    Dim s1 As Worksheet, s2 As Worksheet, LastRow As Integer, v As String, j As Integer,      
    oldv As String, newv As String

    LastRow = Cells(Rows.count, "A").End(xlUp).row

    Set s1 = Sheets("JE_data")
    Set s2 = Sheets("ListToReplace")
    Set A = s1.Range("J:J").Cells.SpecialCells(xlCellTypeConstants)
    For Each r In A
        v = r.Value

        For j = 2 To LastRow

            oldv = s2.Cells(j, 1).text
            newv = s2.Cells(j, 2).text

'使用した Replace 関数では大文字と小文字が区別されます。「請求書の文字はすべて大文字で始まっていますか?」'そうでない場合は、代わりに v = Replace(v, oldv, newv, 1, -1, vbTextCompare) 関数を使用します。わかりました。

        v = Replace(v, oldv, newv, 1, -1, vbTextCompare)    
        'v = Replace(v, oldv, newv)

        Next j
        r.Value = Trim(v)

    Next r

    Application.ScreenUpdating = True

End Sub

例:

置換するリスト

Left column (old)     Right column (new)
----------------------------------------
Invoice               inv 
Salary                sy 
Credit                cr 

JE_データ

cr Note
cr note 
INV/2712/14RF/0229/14 
Invoice 1078 10 
TECHNOQ01SI 2014 03288

(編集者注: コメントに書いてある例なので正しいかわかりません)

Credit と置き換えられました cr そして Invoice に置き換えられると予想されていました inv しかしそうではありませんでした

役に立ちましたか?

解決

使用した Replace 関数では大文字と小文字が区別されます。請求書の文字はすべて大文字で始まっていますか?そうでない場合は使用してください

v = Replace(v, oldv, newv, 1, -1, vbTextCompare)

代わりに関数を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top