Frage

Ich muss STRINGS ersetzen, aber bisher ist es mir gelungen, nur Wörter zu ersetzen.Der Code durchläuft die Spalte „Beschreibung“ und soll jede Sequenz aus der Liste ersetzen.Die Idee ist, Abkürzungen zu verwenden(neue Werte) statt vollständiger Wörter (alte Werte).

Jedes Mal, wenn ein benachbartes Wort, Zeichen usw. (kein Leerzeichen) vorhanden ist, schlägt der Code fehl.Was ist falsch?Danke schön!!!

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

Bei der Funktion „Ersetzen“ muss die Groß-/Kleinschreibung beachtet werden.„Sind Sie sicher, dass alle Ihre Rechnungswörter mit Großbuchstaben beginnen?'Wenn nicht, verwenden Sie stattdessen die Funktion v = Replacement(v, oldv, newv, 1, -1, vbTextCompare).OK.

        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

Beispiel:

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

(Anmerkung des Herausgebers: Ich weiß nicht, ob das Beispiel korrekt ist, da es in den Kommentaren geschrieben wurde)

Credit wurde durch ersetzt cr Und Invoice sollte voraussichtlich durch ersetzt werden inv Aber es war nicht so

War es hilfreich?

Lösung

Bei der Ersetzungsfunktion, wie Sie sie verwendet haben, muss die Groß-/Kleinschreibung beachtet werden.Sind Sie sicher, dass alle Ihre Rechnungswörter mit Großbuchstaben beginnen?Wenn nicht, dann verwenden

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

Funktion stattdessen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top