Excel - copiar filas de una hoja a otra si se dan condicion

 
Vista:

copiar filas de una hoja a otra si se dan condicion

Publicado por Carmen Maria (5 intervenciones) el 17/07/2012 21:46:21
Por mi trabajo Tengo un Excel para llevar una aseguradora.

Quiero copiar de las hojas enero pasando por febrero y hasta diciembre, desde la fila A16 hasta la fila AB16 si se da la condición que en la celda B16 NO ESTE VACIA y la celda C16 SI ESTE VACIA.

Luego baja a la siguiente columna y hace lo mismo, hasta que no se de la condición. "es decir hasta que ya no haya más clientes"

Esto que copia lo tiene que pegar en la hoja Cartera en las mismas celdas sin que quede espacio entre filas.

En definitiva lo que quiero hacer es que los clientes que están divididos por meses, queden en la hoja Cartera cuando se ejecute esta macro. "porque entiendo que esto tiene que se por una macro”

yo he intentado cambiar una macro que ya tenía funcionando, pero al añadir varias columnas y hacer algunas modificaciones no soy capaz de que funcione ahora, por favor ruego ayuda, pues lo necesito para mi trabajo.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

copiar filas de una hoja a otra si se dan condicion

Publicado por Carmen Maria (5 intervenciones) el 17/07/2012 21:48:11
perdona, copio la macro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub distribuir_renovaciones()
Dim hoja As Worksheet, fila As Byte, celda As Range
Dim fila_destino As Integer, columna As Byte, destino As String
For Each hoja In Worksheets
If hoja.Name <> "Cartera" And hoja.Name <> "Tfn" And hoja.Name <> "Resumen" And hoja.Name <> "Bajas" And hoja.Name <> "Mantenimiento" And hoja.[e14] <> "" Then
fila = hoja.[e14].End(xlDown).Row
For Each celda In hoja.Range("E14:E" & fila)
destino = "Cartera"
If IsDate(celda.Offset(0, -3)) Then destino = "Bajas"
If Application.CountIf(Worksheets(destino).Range("e:e"), celda.Value) Then
Else
If Sheets(destino).[e6].Value = "" Then
fila_destino = 5
Else: fila_destino = Sheets(destino).[e246].End(xlUp).Row
End If
For columna = 1 To 21
Sheets(destino).Cells(fila_destino + 1, columna) = hoja.Cells(celda.Row, columna)
Next columna
End If
Next celda
End If
Next hoja
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

copiar filas de una hoja a otra si se dan condicion

Publicado por Antoni Masana (2477 intervenciones) el 18/07/2012 09:35:43
No entiendo muy bien que es lo que quieres copiar de cada hoja.

¿Solo la fila 16 de la columna A a la AB si cumple la condiciones de las celdas B16 y C16?

¿Todas las filas desde la 16 hasta el final con la condicion que las celdas de la columna B y C de cada fila cumplan la condición?

¿Cuando se acaban los datos? ¿Cuando la celda de la columna A esta vacia?

En tu macro utilizas el destino "Bajas" y no "Cartera"

Las macros como el resto de programas se ven un poco más claros asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub distribuir_renovaciones()
    Dim hoja As Worksheet, fila As Byte, celda As Range
    Dim fila_destino As Integer, columna As Byte, destino As String
 
    For Each hoja In Worksheets
 
        If hoja.Name <> "Cartera" And _
           hoja.Name <> "Tfn" And _
           hoja.Name <> "Resumen" And _
           hoja.Name <> "Bajas" And _
           hoja.Name <> "Mantenimiento" And _
           hoja.[e14] <> "" Then
 
           fila = hoja.[e14].End(xlDown).Row
 
           For Each celda In hoja.Range("E14:E" & fila)
               destino = "Cartera"
               If IsDate(celda.Offset(0, -3)) Then destino = "Bajas"
 
               If Application.CountIf(Worksheets(destino).Range("e:e"), celda.Value) Then
               Else
                  If Sheets(destino).[e6].Value = "" Then
                     fila_destino = 5
                  Else
                     fila_destino = Sheets(destino).[e246].End(xlUp).Row
                  End If
 
                  For columna = 1 To 21
                     Sheets(destino).Cells(fila_destino + 1, columna) = hoja.Cells(celda.Row, columna)
                 Next columna
              End If
           Next celda
        End If
    Next hoja
End Sub


Te pediria una excel para hacer pruebas pero supongo que tienen datos confidenciales.

Si tienes uno para pruebas sin datos confidenciales te puedo ayudar, bueno y si me aclaras las duras.


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

copiar filas de una hoja a otra si se dan condicion

Publicado por Carmen María (5 intervenciones) el 18/07/2012 09:54:25
Muchas gracias por las molestias, como bien dices lo mejor es que te envié la hoja excel, sie me dejas tu email con gusto te la hago llegar. Claro está con algunos datos ficticios.

Un saludo y de nuevo muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

copiar filas de una hoja a otra si se dan condicion

Publicado por Carmen Maria (5 intervenciones) el 18/07/2012 21:01:57
Te he enviado el correo con el archivo excel como me pides, saludos y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar