Pregunta

Necesito reemplazar STRINGS pero hasta ahora logré reemplazar solo palabras.El código pasa por la columna Descripción y se supone que reemplaza cada secuencia de la lista.La idea es utilizar abreviaturas (nuevos valores) en lugar de palabras completas (viejos valores).

Cada vez que hay una palabra, un carácter, etc. vecino (sin espacios), el código falla.¿Lo que está mal?¡¡¡Gracias!!!

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 función Reemplazar tal como la has usado distingue entre mayúsculas y minúsculas.'¿Está seguro de que todas las palabras de su factura comienzan con mayúscula?'Si no es así, utilice la función v = Reemplazar (v, oldv, newv, 1, -1, vbTextCompare) en su lugar.DE ACUERDO.

        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

Ejemplo:

Lista para reemplazar

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

JE_datos

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

(Nota del editor: No sé si el ejemplo es correcto ya que fue escrito en los comentarios)

Credit fue reemplazado con cr y Invoice Se esperaba que fuera reemplazado por inv pero no era

¿Fue útil?

Solución

Reemplazar la función como lo ha usado es distingue entre mayúsculas y minúsculas.¿Está seguro de que todas las palabras de la factura comienzan con la letra mayúscula?Si no, entonces usa

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

Función en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top