Domanda

Devo sostituire STRINGS ma finora sono riuscito a sostituire solo le parole.Il codice passa attraverso la colonna Descrizione e dovrebbe sostituire ogni sequenza dall'elenco.L'idea è di usare le abbreviazioni(nuovi valori) anziché parole complete (vecchi valori).

Ogni volta che c'è una parola, un carattere ecc. vicini (senza spazio), il codice fallisce.Che c'è?Grazie!!!

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

'La funzione Sostituisci come l'hai utilizzata fa distinzione tra maiuscole e minuscole."Sei sicuro che tutte le parole della tua fattura inizino con la lettera maiuscola?"'In caso contrario, utilizzare invece la funzione v = Sostituisci (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

Esempio:

Elenco da sostituire

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

JE_dati

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

(Nota dell'editore: Non so se l'esempio è corretto visto che è stato scritto nei commenti)

Credit è stato sostituito con cr E Invoice avrebbe dovuto essere sostituito con inv ma non lo era

È stato utile?

Soluzione

La funzione Sostituisci come l'hai utilizzata fa distinzione tra maiuscole e minuscole.Sei sicuro che tutte le parole della tua fattura inizino con la lettera maiuscola?In caso contrario, utilizzare

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

funzione invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top