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.