Imprimir página | Cerrar ventana

Selección de columnas según nombre celda superior

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84089
Fecha de impresión: 25/Abril/2019 a las 11:57


Tema: Selección de columnas según nombre celda superior
Publicado por: jmpm
Asunto: Selección de columnas según nombre celda superior
Fecha de publicación: 19/Noviembre/2018 a las 13:14
Muy buenas. Tengo una macro con la que quiero abrir varios archivos. De cada archivo a mi solo me interesa una columna de unas siete filas que suele estar por la mitad del documento pero no siempre en la misma posición. Dicha columna está formada por una primera celda dónde viene el título (este sí que es siempre el mismo) y debajo vienen los datos que necesito. Mi pregunta es si existe alguna manera de crear una macro que lea las distintas celdas y que cuando encuentre la celda del título coja todo lo de abajo.

Muchas gracias!



Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 19/Noviembre/2018 a las 13:25
Si, seguramente existe(n) alguna(s) manera(s) de hacerlo.

Para los datos que has aportado... pon en marcha la grabadora > Realiza una secuencia de ejemplo > Detén la grabadora > …

… realiza las modificaciones necesarias para automatizar/generalizar el ejemplo.




-------------
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: jmpm
Fecha de publicación: 21/Noviembre/2018 a las 08:58
Esto fue lo que hice y me funcionó:

finalrow = Sheets("Report").Range("A500").End(xlUp).Row
       
        For i = 2 To finalrow
   
               If Cells(i, 1) = "Maximum" Then
              
                    wsOrigen0.Cells(i + 2, 2).Copy
                    wsDestino.Cells(9, 1).PasteSpecial xlPasteValues
            
                    wsOrigen0.Cells(i + 3, 2).Copy
                    wsDestino.Cells(9, 2).PasteSpecial xlPasteValues
                        
                    
               End If

        Next i


Publicado por: AnSanVal
Fecha de publicación: 21/Noviembre/2018 a las 12:33


(Creo que) no necesitas  COPIAR/PEGAR:


. . .

  For i = 2 To finalRow

    If wsOrigen.Cells(i, 1) = "Maximum" Then

      wsDestino.Range("A9:B9").Value = WorksheetFunction.Transpose (wsOrigen.Cells(i + 2, 2).Resize(2).Value)

    End If

  Next i

. . .




-------------
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.



Imprimir página | Cerrar ventana