|
sdgm me propuso una posible solucion al problema de copiar alguon datos de una hoja a otra en funcion de la coincidencia de valores entre dos columnas
Sub BuscarMunis() Dim Ult As Long Sheets(1).Activate Range("A:A").Clear Ult = Cells(Rows.Count, 2).End(xlUp).Row Range(Cells(1, 1), Cells(Ult, 1)).Formula = _ "=IFERROR(VLOOKUP(B1,Hoja2!A:C,3,FALSE),"""")" End Sub
he tenido que cambiar un poco el codigo por una razon: no quiero borrar la columna A por que contiene datos, solo quiero sustituir algunos en llos que la columna b esta en la hoja 2 pero el resto deben mantenerse, para ello uso una formula en una columna auxiliar (en este caso la 13) para colocar 0 en los que no quiero borrar y el valor correcto en los que debo modificar. La rutina a quedado de este modo, lo que me ahorra el paso por access y por tanto bastante tiempo
Sub BuscarMunis() Dim ult As Long ult = Cells(Rows.Count, 2).End(xlUp).Row Sheets(1).Activate
'escribo los valores que necesito en la columna 13 mediante una formula que dara 0 si no existen
Range(Cells(2, 13), Cells(ult, 13)).Formula = _ "=IFERROR(VLOOKUP(B1,Hoja2!A:b,2,FALSE),)"
' copio los valores distinto de 0 en la columna A
For n = 2 To ult If Cells(n, 13).Value <> 0 Then Cells(n, 1).Value = Cells(n, 13).Value End If Next
'elimino las formulas de la columna 13
Range(Cells(2, 13), Cells(ult, 13)).Delete
End Sub
con lo que ahorro un monton de pasos intermedios entre acces y excel. Mil gracias a todos
Si no hay comentarios o mejoras al codigo podeis cerrar el hilo.
------------- Gracias a todos de antemano
|