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, 5 meses, 5 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 bucleFor
para recorrer cada celda en el rango Y:BB, omitiendo la primera fila utilizando el índice de fila2
.- 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