Macro para actualizar celdas en otra hoja según condición y valor

Os pido ayuda para realizar una macro para actualizar dos columnas de una hoja con 20.000 articulos, según una condición y valor de otra hoja. Me explico mejor..

Tengo dos hojas con las siguientes columnas:

  • Hoja1: A1 (Ref. Art) - B1 (Precio %) - C1 ( Precio F)
  • Hoja2: A1 (Ref. Art)  -  B1 (Precio %)  -  C1 (Precio F)  -  D1(Art. Actualizado - SI/NO) - E1 (Nuevo)

Y os voy a poner un ejemplo de lo que debería hacer la macro:

SI (  D2 -> Hoja 2  ==  "SI"  ) entonces

    Buscamos la Ref. Articulo (A2 ->Hoja2) en la columna A->Hoja1

SI la encuentra ( y es por ejemplo A150->Hoja2 ) entonces

                    B150->Hoja1 (Precio %) =  B2->Hoja2 (Precio %)

                    C150->Hoja1 (Precio F) = C2->Hoja2 (Precio F)

         SINO  la encuentra

                   E2->Hoja2 (Nuevo) = "Si"

Espero que se entienda el ejemplo y os agradezco la ayuda de antemano.

2 respuestas

Respuesta
2

H    o l a:

Te anexo la macro, cambia en la macro "Hoja1" y "Hoja2" por los nombres reales de tus hojas.

Sub Actualizar_Precios()
'---
'   Por.Dante Amor
'---
    Set h1 = Sheets("Hoja1")    'Hoja 1
    Set h2 = Sheets("Hoja2")    'Hoja 2
    '
    For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        If UCase(h2.Cells(i, "D")) = "SI" Then
            Set b = h1.Columns("A").Find(h2.Cells(i, "A"), LookAt:=xlWhole)
            If Not b Is Nothing Then
                h1.Cells(b.Row, "B") = h2.Cells(i, "B")
                h1.Cells(b.Row, "C") = h2.Cells(i, "C")
            Else
                h2.Cells(i, "E") = "Si"
            End If
        End If
    Next
    MsgBox "Actualización de precios terminada", vbInformation, "ACTUALIZAR PRECIOS"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

H o la 

te paso la macro 

Sub compara_copia()
'//Por Aortiz
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
    Set r = h2.Columns("A")
    Set b = r.Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If Not b Is Nothing Then
            If h2.Cells(b.Row, "D") = "SI" Then
                h1.Cells(i, "B") = h2.Cells(b.Row, "B")
                h1.Cells(i, "C") = h2.Cells(b.Row, "C")
            Else
                h2.Cells(b.Row, "E") = "SI"
        End If
    End If
Next i
End Sub

valora la respuesta para finalizar saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas