Macro que copie renglones segun valores en columnas
Tengo el siguiente detalle. En un libro de excel tengo alrededor de miles de registros, con la siguiente estructura:
ColA ... Col E col F... Col AK col AL ... Col BD
xx dato dato valor1 valor2 ... Valor 3
La cosa es la siguiente quiero que se copie la fila completa tantas veces como sea siempre y cuando el dato de las columnas AK, AL... BD sean diferentes de cero.
ColA ... Col E col F... Col AK col AL ... Col BD
xx dato dato valor1 valor2 ... Valor 3
La cosa es la siguiente quiero que se copie la fila completa tantas veces como sea siempre y cuando el dato de las columnas AK, AL... BD sean diferentes de cero.
1 Respuesta
Respuesta de excelinomano
1
1
Yo te aconsejo que siempre que hagas una pregunta seas lo mas explicito posible para que te podemos ayudar de la mejor manera, porque nosotros tenemos el conocimiento tecnico en macros, pero, no podemos adivinar sus nececidades, por ejemplo aqui en tu caso en concreto aclarame algunos puntos como:
- A donde se va a copiar la fila cuando cumpla con la condición, a otra hoja, a otra parte de la misma hoja, que inserte renglones hacia abajo, en fin hacia donde voy a copiar esos datos
- ¿Se tienen que evaluar las tres columnas al mismo tiempo? ¿O cómo? ¿Si AK es cero entonces que evalue AL y luego BD o en que orden?
-¿Cuándo copie las filas debe irlas pegando una debajo de otra o como?
Como te daras cuenta el exito de la ayuda consiste en que tan bien se formulen las preguntas. Aclarame los puntos que te expuse para que te pueda yo ayudar
- A donde se va a copiar la fila cuando cumpla con la condición, a otra hoja, a otra parte de la misma hoja, que inserte renglones hacia abajo, en fin hacia donde voy a copiar esos datos
- ¿Se tienen que evaluar las tres columnas al mismo tiempo? ¿O cómo? ¿Si AK es cero entonces que evalue AL y luego BD o en que orden?
-¿Cuándo copie las filas debe irlas pegando una debajo de otra o como?
Como te daras cuenta el exito de la ayuda consiste en que tan bien se formulen las preguntas. Aclarame los puntos que te expuse para que te pueda yo ayudar
Que tal;
Perdón por la falta...
Estos serían los criterios:
Mis datos los tengo en una hoja llamada DATOS
1.Solo se evaluaría una columna a la vez, es decir, evalua AK y si es diferente de cero copia la fila en una hoja separada (el nombre de esta hoja que se llame COPIA y que inicie en la columna A2
2. Luego, evalua la columna AL y si es diferente de cero sucede lo mismo que en punto 1(y pegaría en la A3, es decir, se pega hacia abajo del último registro copiado). y se recorre a la columna AM y así hasta la BD.
3. Si es cero no hace nada y se pasa a la siguiente fila (esto se debe a que si cualquiera de las columnas es cero las siguientes también serán cero).
... Espero que ayude con esto.
Sorry por los datos a explicar, no tengo mucha experiencia en esto de la programación.
Saludos y gracias por la ayuda.
Perdón por la falta...
Estos serían los criterios:
Mis datos los tengo en una hoja llamada DATOS
1.Solo se evaluaría una columna a la vez, es decir, evalua AK y si es diferente de cero copia la fila en una hoja separada (el nombre de esta hoja que se llame COPIA y que inicie en la columna A2
2. Luego, evalua la columna AL y si es diferente de cero sucede lo mismo que en punto 1(y pegaría en la A3, es decir, se pega hacia abajo del último registro copiado). y se recorre a la columna AM y así hasta la BD.
3. Si es cero no hace nada y se pasa a la siguiente fila (esto se debe a que si cualquiera de las columnas es cero las siguientes también serán cero).
... Espero que ayude con esto.
Sorry por los datos a explicar, no tengo mucha experiencia en esto de la programación.
Saludos y gracias por la ayuda.
Creo que no le entendí muy bien todavía a tu planteamiento, pero en un intento por ayudarte aqui te mando un código, solo copialo y pégalo a tu archivo, OJO: la hoja donde está tu base de datos debe llamarse DATOS y debes crear una nueva hoja que se llame COPIA (en mayúsculas las dos hojas). Si te entendí bien, no debes tener problemas al correr la macro. Y por favor no olvides calificar y cerrar la pregunta.
Sub copiar()
Sheets("DATOS").Select
Range("AK2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AL2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AM2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AN2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AO2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AP2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AQ2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AR2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AS2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AT2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AU2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AV2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AW2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AX2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AY2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AZ2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BA2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BB2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BC2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BD2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Sub copiar()
Sheets("DATOS").Select
Range("AK2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AL2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AM2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AN2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AO2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AP2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AQ2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AR2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AS2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AT2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AU2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AV2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AW2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AX2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AY2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("AZ2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BA2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BB2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BC2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
Range("BD2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> 0 Then
ActiveCell.EntireRow.Copy
Sheets("COPIA").Select
Range("A2").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Sheets("DATOS").Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
- Compartir respuesta
- Anónimo
ahora mismo