Jump to content
  • Debido a la crisis sanitaria, hasta el día 31 de marzo, el registro al foro de Ayuda Excel será totalmente gratuito para facilitar el teletrabajo. Todos los registros que se produzcan entre estas fechas tendrán acceso gratuito ilimitado a la comunidad hasta el 30 de abril.

    Regístrate

    Si te surge alguna duda mientras estás trabajando en casa con Excel, ya tienes a quien preguntar.

    Espero que esta medida te sirva de ayuda. Frenar la expansión del coronavirus depende de todos. Sé responsable.

Alex_edm

ANSWERED Copiar Filas de manera condicional variando la forma

Recommended Posts

Hola:

LLevo tiempo intnetandolo y ya no se que hacer, la verdad es que mis conociminetos de VBA son limitados, a ver si me podeis ayudar....Gracias de antemano.

Tengo un excel cuya Hoja1 "INICIO", se rellena desde otro programa. La hoja INICI O, se divide en grupos de datos, cada uno de ellos formado por un encabezado (gris oscuro) y unos datos en las filas siguientes; entre cada grupo de datos siempre hay como minimo una fila en blanco.

Lo que quiero hacer es copiar en la Hoja 2 ("BAAN"), todos los datos de la hoja 1, pero diferenciandolos por el encabezado de cada grupo, de tal forma que al copiarlo el encabezado de cada grupo esté en la primera columna de la Hoja BAAN correspondiente . He empezado a hacer una macro intentando utilizar las filas en blanco entre cada grupo de datos para diferenciarr cuando empeiza cada uno, pero imposible....

Adjunto el archivo en el que estoy trabajando y en la Hoja 2 ("BAAN") he copiado 'a mano' las primeras filas a modo de ejemplo de cómo me gustaría que quedaran despues de ejecutar la macro.

Muchas gracias. Un saludo.

Copia de H21_IMPORTAR_BANN_R00B01.xlsm

Share this post


Link to post
Share on other sites
Sub CopiarEnBAAN()
Dim INICIO As Worksheet, BAAN As Worksheet
Dim Grupo As String, Fila As Long, x As Long
'--
Application.ScreenUpdating = False
Set INICIO = Sheets("INICIO")
Set BAAN = Sheets("BAAN")
Fila = 5
Sheets("BAAN").Cells.Clear
For x = 6 To INICIO.Range("A" & Rows.Count).End(xlUp).Row
   If INICIO.Range("C" & x) = "CANT" Then
      Grupo = INICIO.Range("A" & x)
   Else
      If Trim(INICIO.Range("A" & x)) <> "" Then
         BAAN.Range("A" & Fila) = Grupo
         INICIO.Range("A" & x).Resize(1, 3).Copy BAAN.Range("B" & Fila)
         BAAN.Range("B" & Fila).Copy: BAAN.Range("A" & Fila).PasteSpecial xlPasteFormats
      End If
   End If
   Fila = Fila + 1
Next
Application.CutCopyMode = False
BAAN.Activate
BAAN.Range("A6").Select
ActiveWindow.ScrollRow = 1
End Sub

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png