Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
VBA para copiar desde la fila X hasta la primera celda en blanco

Tengo una hoja de cálculo de Excel que se actualiza diariamente. Genera una lista basada en los datos actualizados. Digamos que genera una lista de todos los que necesitan completar una tarea en particular ese día. Esa lista cambia en longitud día a día. Para lograr el resultado necesario, utiliza fórmulas en una estructura "si otra celda en esta fila no está en blanco, haz...":

=SI(LARGO(I4)=0),"",)

A veces esta lista puede ser bastante larga. En lugar de requerir que el usuario se desplace demasiado, me gustaría proporcionar un botón "copiar al portapapeles". Luego, los usuarios pegan las filas en otra aplicación. No he tenido ningún problema para que copie una lista con una longitud fija; por ejemplo, copiar M4 a M500 en el portapapeles es fácil. Pero digamos que hoy, la lista solo llega a M286, y mañana es a M117, y así sucesivamente. Me gustaría copiar solo las celdas llenas, no las que siguen en blanco.

Esto es lo que he recopilado de Google:

 Private Sub CommandButton1_Click() Application.ScreenUpdating = False Dim xSheet As Worksheet firstBlankRow = Worksheets("Sheet1").Range("M4").End(xlDown).Row + 1 MsgBox (unusedRow) Set xSheet = ActiveSheet xSheet.Range("M4:M" & firstBlankRow).Copy Application.ScreenUpdating = True End Sub

Esto encuentra con éxito la última celda con una fórmula. Sin embargo, eso no es exactamente lo que busco. Quiero la última celda con un valor, ese valor generado por la fórmula. En este caso particular, "última celda con un valor" siempre será "celda antes de la primera celda en blanco". No habrá huecos en la lista. Entonces, ¿estoy cerca? ¿Cómo consigo que encuentre hasta la última celda con un valor? Gracias.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Copiar columna excluyendo espacios en blanco en la parte inferior

  • Para excluir espacios en blanco ( ="" o ' ) en la parte inferior de una columna, use el método Find con el parámetro de su argumento LookIn establecido en xlValues .
  • Tenga en cuenta que esto fallará si la hoja de trabajo está filtrada o si hay filas o columnas ocultas.

Módulo de hoja, por ejemplo, Sheet1

  • Se supone que el botón de comando está en la hoja de trabajo ( Me ) desde donde se copiará.
 Option Explicit Private Sub CommandButton1_Click() CopyColumnNonBlanks Me.Range("M4") End Sub

Módulo estándar, por ejemplo, Module1

  • Opcionalmente, puedes ponerlo en el módulo de la hoja con el primer código (no recomendado). Entonces tendrás que llamarlo con, por ejemplo

     Sheet1.CopyColumnNonBlanks(ThisWorkbook.Worksheets("Sheet2").Range("A4"))

    para otra hoja de trabajo.

 Option Explicit Sub CopyColumnNonBlanks(ByVal FirstCell As Range) With FirstCell.Cells(1) Dim lCell As Range: Set lCell = .Resize(.Worksheet.Rows.Count _ - .Row + 1).Find("*", , xlValues, , , xlPrevious) If lCell Is Nothing Then MsgBox "All cells in the column range are blank.", vbCritical Exit Sub End If .Resize(lCell.Row - .Row + 1).Copy End With End Sub
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda