Como hacer una comparación de una columna con otra y reemplazar datos

Tengo una macro que realiza lo que necesito, busco un apellido de la columna C, en la columna A, si lo encuentra, va hacer un reemplazo que esta ubicado en la columna D.

La macro hace todo muy bien e indica cuantos cambios realizo pero solo lo hace buscando en una celda, pero quisiera pedir de su ayuda para que haga la búsqueda de todo lo que esta en la columna y de igual forma vaya reemplazando.

Respuesta
1

Este es el código que uso y si me funciona lo que faltaría es que pase a la siguiente celda haga la comparación y si existe lo reemplace, y así sucesivamente hasta que termine de comparar y reemplazar, espero me puedan ayudar.

Sub ValorExiste()'Definición de variablesDim rango As StringDim valor As StringDim resultado As RangeDim primerResultado As StringDim cont As Integer'Solicitar información al usuariorango = ("A4:A17002") 'InputBox("Ingresa el RANGO a buscar:")valor = Range("C3").Text 'InputBox("Ingresa el VALOR a buscar:")reemp = Range("D3").Text'Inicializar contador de coincidenciascont = 0'Primera búsqueda del valor dentro del rangoSet resultado = Range(rango).Find(What:=valor, _                    LookIn:=xlValues, _                    LookAt:=xlPart, _                    SearchOrder:=xlByRows, _                    SearchDirection:=xlNext, _                    MatchCase:=False, _                    SearchFormat:=False)'Si el resultado de la búsqueda no es vacíoIf Not resultado Is Nothing Then    primerResultado = resultado.Address    'Inicia bucle para hacer varias búsquedas    '     Do        cont = cont + 1        'Cambia el contenido de la celda        resultado.Replace What:=valor, _        Replacement:=reemp, _        LookAt:=xlPart, _        SearchOrder:=xlByRows, _        MatchCase:=False, SearchFormat:=False, _        ReplaceFormat:=False 'Interior.ColorIndex = 6'        'Vuelve a buscar el valor        Set resultado = Range(rango).FindNext(resultado)   Loop Until resultado Is Nothing'Muestra un cuadro de diálogo con el número de coincidenciasMsgBox "Se hicieron " & cont & " Reemplazos. " & _        " Del apellido " & valor & " . "End IfEnd Sub

1 respuesta más de otro experto

Respuesta
1

Me puedes explicar cuál es el objetivo que necesitas, es decir, cuál es el resultado que esperas, explícame con unos ejemplos lo que necesitas y te genero una macro nueva.

En tu macro ya tienes 3 ciclos y todavía me dices que vas a poner otro ciclo, mejor explícame qué es lo que quieres hacer.

¡Gracias! 

CAMBIOS:                             BUSCAR POR:                       CAMBIAR POR:

JUAN DE LA ROSA               DE LA ROSA                           DE_LA_ROSA

PEDRO ALA TORRE            ALA TORRE                           ALA_TORRE

LUIS  DE LOS RIOS             DE LOS RIOS                         DE_LOS_RIOS

Entonces la macro tiene que buscar  primero, el primer apellido de la columna "BUSCAR POR:", este va y lo busca en la columna "CAMBIOS" que para todos los casos estara el nombre completo y pues puede haber diferentes Nombres pero con el apellido que esta buscando, entonces ya que busca y los encuentra lo remplazara por los apellidos de la columna "CAMBIAR POR:" , para cuestion de ejemplo quedria así la columna de "CAMBIOS":

Asi debe de quedar :

CAMBIOS:

JUAN DE_LA_ROSA

PEDRO ALA_TORRE

LUIS DE_LOS_RIOS

Y hasta donde tengo la macro es que si va y busca el valor de la comuna "BUSCAR POR:", los encuentra en la columna "CAMBIOS:" y lo reemplaza, pero a todos les deja el primer apellido de la columna "CAMBIAR POR:".

Te anexo la macro

Sub Cambiar()
'Por.Dante Amor
    For i = 3 To Range("C" & Rows.Count).End(xlUp).Row
        Columns("A").Replace Cells(i, "C"), Cells(i, "D"), xlPart
    Next
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

¡Gracias! ¿Creo qué me fui por el camino difícil verdad? ja ja, excelente muchas gracias. Según yo ya valore si no me dices para checar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas