Visual Basic para Aplicaciones - Macro comparacion excel

Life is soft - evento anual de software empresarial
 
Vista:

Macro comparacion excel

Publicado por Alex (2 intervenciones) el 04/02/2013 12:25:58
Buenos dias,
Estoy intentando hacer una macro para que me compare una referencia y una fecha de una Hoja1, con la referencia y la fecha de una Hoja2, y si los valores coinciden, que me copie la cantidad que le corresponde en la Hoja1.
Os añado un ejemplo de mi tabla, y un ejemplo de como debería ser el resultado final.
He intentado varias macros pero no consigo el resultado que me gustaría.
Muchas gracias por adelantado!

Un saludo


HOJA 1
___________01/02___02/02___03/02___04/02___05/02
Referencia1
Referencia2

HOJA2
____________________FECHA________CANTIDAD
Referencia1_________01-02-2013__________4
Referencia1_________02-02-2013__________5
Referencia1_________04-02-2013__________6 *
Referencia 1_________04-02-2013__________6 *
Referencia 2_________05-02-2013__________7

* Si dos fechas coinciden sumar el valor

RESULTADO FINAL HOJA 1
____________01/02____02/02___03/02___04/02___05/02
Referencia1____ 4_______5_______0______12
Referencia2____________________________________7
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Macro comparacion excel

Publicado por JuanC (565 intervenciones) el 04/02/2013 14:23:44
te hice un pequeño código, fijate si te sirve...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
 
Sub test()
Dim rngRef As Range, i&, sAdd$
Dim c As Range, rngBusq As Range, r As Range
Set rngRef = Hoja1.Range("C5:C9")   '//Columna de referencias
Set rngBusq = Hoja2.Range("C6:C18") '//Columna de referencias
 
For Each c In rngRef
    Set r = rngBusq.Find(What:=VBA.Trim(VBA.LCase(c.Value)), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchCase:=False)
    If Not r Is Nothing Then
       sAdd = r.Address
       Do
          Set r = rngBusq.FindNext(r)
          If Not r Is Nothing Then
             For i = 1 To 5  '//Cinco fechas
                 If c.Offset(-(c.Row - 4), i).Value = r.Offset(, 1).Value Then '//=Fecha?
                    c.Offset(, i).Value = c.Offset(, i).Value + r.Offset(, 2).Value  '//Acumula valores
                    Exit For
                 End If
             Next
          End If
       Loop While Not r Is Nothing And r.Address <> sAdd
    End If
Next
End Sub


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro comparacion excel

Publicado por Alex (2 intervenciones) el 05/02/2013 11:56:51
Muchas gracias JuanC!
Voy a probar a ver si me funciona.
Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Macro comparacion excel

Publicado por JuanC (565 intervenciones) el 05/02/2013 12:48:50
me olvidé de un detalle importante...
en la línea

1
If c.Offset(-(c.Row - 4), i).Value = r.Offset(, 1).Value Then '//=Fecha?


el 4 es porque los datos (referencias) están a partir de la fila 5 (C5)
deberías ajustar ese valor a tu planilla...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar