Cambiar el formato de múltiples columnas, pero excluir la primera fila y sólo incluir hasta la última fila con datos en ella

Actualmente tengo algún código que cambia el formato número de columnas Y a BB a tipo decimal. Esto está bien, sin embargo, me gustaría una solución más eficiente que no incluye la primera fila, y para en la última fila con datos en ella. También debe considerar el hecho de que puede haber lagunas en los datos de cada columna.

Sheet2.Range("Y:BB").NumberFormat = "0.00"

También he probado lo siguiente, pero no funcionó.

Sheet2.Range("Y2:BB2").End(xlDown).NumberFormat = "0.00"

Pregunta hecha hace 3 años, 4 meses, 29 días - Por codealchemyf00f


3 Respuestas:

  • Pruebe el siguiente camino, por favor:

    Dim sh As Worksheet, URrng As Range, lastRow As Long
     
     Set sh = Sheet2
     Set URrng = sh.UsedRange
      lastRow = URrng.rows.count + URrng.row - 1 'last row of the used range
      sh.Range("Y2:BB" & lastRow).NumberFormat = "0.00"
    

    Respondida el Dec 18, 2020 a las 10:15 - por syntaxsavvy

    Votos positivos: 0 | Votos negativos: 0

  • Para cambiar el formato de múltiples columnas y excluir la primera fila, así como detenerse en la última fila con datos en cada columna, puedes utilizar el siguiente enfoque.

    vb
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rng As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet2")
    
    For Each col In ws.Range("Y:BB").Columns
        lastRow = ws.Cells(ws.Rows.Count, col.Column).End(xlUp).Row
        Set rng = ws.Range(ws.Cells(2, col.Column), ws.Cells(lastRow, col.Column))
        rng.NumberFormat = "0.00"
    Next col
    

    Este código recorrerá todas las columnas desde la Y hasta la BB en la hoja "Sheet2". Para cada columna, identificará la última fila con datos y luego seleccionará el rango desde la segunda fila hasta la última fila con datos en esa columna, excluyendo la primera fila. Finalmente, cambiará el formato de número del rango seleccionado a "0.00".

    Espero que esta solución sea útil para tu requerimiento. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 19, 2020 a las 10:17 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Claro, aquí tienes una solución más eficiente que excluye la primera fila e incluye solo hasta la última fila con datos en ella:

    
    Dim LastRow As Long
    
    'Obtener la última fila con datos en la columna Y
    LastRow = Sheet2.Cells(Sheet2.Rows.Count, "Y").End(xlUp).Row
    
    'Recorrer todas las celdas en el rango Y:BB y aplicar el formato decimal, omitiendo la primera fila
    For i = 2 To LastRow
        For j = 25 To 27
            Sheet2.Cells(i, j).NumberFormat = "0.00"
        Next j
    Next i
    

    Cómo funciona:

    Primero, calculamos la última fila con datos en la columna Y utilizando la propiedad End(xlUp) para localizar la última celda no vacía en la columna. Luego, usamos un bucle For para recorrer cada celda en el rango Y:BB, omitiendo la primera fila utilizando el índice de fila 2.

    • Para cada celda, aplicamos el formato decimal utilizando la propiedad `NumberFormat`.

    Esta solución es más eficiente porque solo itera sobre las celdas que contienen datos, evitando cualquier celda vacía. También es más flexible ya que maneja filas vacías y lagunas en los datos.

    Respondida el Dec 19, 2020 a las 10:27 - por Gemini

    Votos positivos: 0 | Votos negativos: 0