Excel - Comparando la celda A1 con toda la columna A en la Hoja 2
Problema
He estado tratando de comparar sheet1 A2 con sheet2 A2 a través de A500 y si existe en algún lugar en sheet2 es una columna, copie toda la fila en una nueva hoja.
He experimentado con muchos bits de código macro de otros, pero hasta ahora no he tenido ningún éxito real.
Averiguar cómo decir eso en código es un poco difícil para mí. Estoy luchando para entender esto.
sub comparar ()
Dim LastRow_1 como entero
Dim LastCol_1 como entero
Dim Data_1 Como rango
Dim LastRow_2 como entero
Dim LastCol_2 como entero
Dim Data_2 como rango
Dim Sh_1 como hoja de trabajo
Dim Sh_2 como hoja de trabajo
Dim X tan largo
Dim Y tan largo
Dim C_1 Como rango
Dim C_2 como rango
Establecer Sh_1 = ActiveWorkbook.Sheets ("Master")
Establecer Sh_2 = ActiveWorkbook.Sheets ("Inventario")
LastRow_1 = Sh_1.range ("A5000"). End (xlUp) .Row
LastCol_1 = Sh_1.range ("A5000"). End (xlToLeft) .Column
Establecer datos_1 = Sh_1.range ("A2"). Cambiar tamaño (LastRow_1, LastCol_1)
LastRow_2 = Sh_2.range ("A5000"). End (xlUp) .Row
LastCol_2 = Sh_2.range ("A5000"). End (xlToLeft) .Column
Establezca Data_2 = Sh_2.range ("A2"). Redimensionar (LastRow_2, LastCol_2)
Para cada C_1 en datos_1
Para cada C_2 en Data_2
Si C_2 = C_1 entonces
'encontró una celda en la hoja 2 que coincidía con la celda en la hoja 1
'ahora haz lo que necesites hacer
Data_2.EntireRow.Copy Destino: = Hojas de trabajo ("New_Master"). Range ("A5000"). End (xlUp) .Oset (1, 0)
Terminara si
Siguiente C_2
Siguiente c_1
final sub
Cuando lo ejecuto, simplemente copia todo en la hoja llamada New_Master, incluidas las que no coinciden.
¿Qué me estoy perdiendo? Tiene que ser obvio, ese suele ser el caso.
Solución
Solo tienes que escribir:
Data_2.EntireRow.Copy
Copia todo el rango "Data_2", que corresponde a la columna A de la hoja "Inventario"
Si desea copiar solo las filas en Data_2 que coinciden con Data_1, escriba
C_2.EntireRow.Copy
¡Eso es!
Nota
Gracias a Ivan-hoe por este consejo en el foro.