簡體   English   中英

VBA從單獨的列表中替換多個字符串

[英]VBA replace multiple strings from a separate list

我需要替換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

'替換使用的函數區分大小寫。 “您確定所有發票字都以大寫字母開頭嗎? '如果沒有,請改用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

例:

ListToReplace

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

JE_data

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

編者注:由於該示例已寫在注釋中,因此我不知道該示例是否正確)

Creditcr代替, Invoice應用inv代替,但不是

使用過的替換功能區分大小寫。 您確定所有發票字都以大寫字母開頭嗎? 如果沒有,則使用

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

功能代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM