Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!