Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda