Excel - Copiar si se cumple el rango de condición
Problema
Quiero copiar datos de una hoja a otra si el rango de entrada se cumple en otra hoja
- Todos mis datos están en la hoja llamada "insertar" fila, la hoja G "insertar" tiene los nombres de las personas
- En el nombre de la hoja "Dom", el rango B4: b17 tiene la lista de nombres de ese equipo
- Si los nombres que aparecen en la hoja de Dom aparecen en la hoja "insertar", quiero copiar esa fila a la fila 75 y superior en la hoja de Dom
Solución
"Fila, hoja G" insertar "tiene los nombres de las personas"
G no puede ser una fila, solo una columna asumiendo que en la columna g tuve que hacer una hoja de muestra
Insertar hoja se verá así desde la columna A a la H
col.G col H
nombre datos a 1 s 2 d 3 f 4 g 5 h 6
La hoja de dom será así
col B row4 adgkwryuzcbmnp
Escribí macro ejecuta la macro y veo si esto es lo que quieres. Habría sido más útil si le hubiera dado un pequeño extracto de hojas de inserción y de dom. Si quieres y puedes modificar la macro para adaptarla a tus datos.
MEJOR GUARDE EL ARCHIVO ORIGINAL DE MANERA SEGURA EN ALGUNA PARTE PARA LA RECUPERACIÓN SI ALGO VA MAL.
Subprueba () Dim cfind As Range, c As Range, x As String, dest As Range, j As Long j = 1 Con hojas de trabajo ("dom") para cada c In. Rango ("B4: B17") x = c .Value With Worksheets ("insert"). UsedRange Set cfind = .Cells.Find (what: = x, lookat: = xlWhole) Si no cfind no es nada, entonces cfind.EntireRow.Copy End With .Range ("A75"). Offset (j, 0) .PasteSpecial j = j + 1 Next c Fin con End Sub Sub deshacer () Con hojas de trabajo ("dom") Rango (.Range ("A75"), .Cells (Rows.Count, "A" )). EntireRow.Delete End With End Sub
Gracias a Venkat por este consejo.