Insertar columnas con VBA ó macros, me preguntaron en un foro de Excel como se insertaban columnas teniendo en cuenta los meses del año, como así también que el informe original no otorgara datos de meses en los cuales no había movimientos, por ello era necesario agregar columnas en base a los meses que faltaban y a su vez se tenía que rellenar con ceros, en este ejemplo se insertan tantas columnas como sean necesarias para que queden en orden correlativo del 1 al 12, simulando los meses, determina cual es la última fila con valores de todas las columnas, en base a ello rellena hasta esa fila con ceros si no hay valor que sea distinto de éste, en el link del final se encuentra el archivo que puedes descargar y adaptar a tus necesidades; te recomiendo que hagas click y leas un excelente libro sobre el tema; aquí va el código:Sub insertacol()
Application.ScreenUpdating = False
Dim fila, col, x, uf, ufmayor, dato As Integer
fila = 1
col = 1
x = 0
For x = 1 To 12
dato = Sheets(“hoja1”).Cells(fila, x).Value
If dato <> x Then
Sheets(“hoja1”).Cells(fila, x).EntireColumn.Insert
Sheets(“hoja1”).Cells(fila, x) = x
Sheets(“hoja1”).Cells(fila, x).Select
With Selection
.NumberFormat = “000”
.Font.Bold = True
End With
End If
‘col = col + 1
Next x
x = 0
For x = 1 To 12
‘Determino la última fila vacia
uf = Sheets(“hoja1”).Cells(Rows.Count, x).End(xlUp).Row
If uf > ufmayor Then
ufmayor = uf
End If
Next x
x = 0
‘Recorre columnas
For x = 1 To 12
‘Recorre filas
For j = 2 To ufmayor
‘Determino cual es la columna que tiene la fila maxina de datos
‘Con ello se hasta donde rellenar con ceros, siempre que la celda este vacía
If Sheets(“hoja1”).Cells(j, x) = Empty Then
Sheets(“hoja1”).Cells(j, x) = 0
End If
Next j
Next x
Application.ScreenUpdating = False
End Sub
manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.
.
helpful INVITE ME A COFFEE and so help keep
up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends