Macro para suma de columnas discontinuas

Tengo una tabla en donde convierto un archivo de texto de resultados de ventas mensuales, tengo un macho que me hace todo eso al igual que formatear las celdas.
Sucede que deseo elaborar un macro contemple la acciones que realizo para poder sumar las columnas.
Creo que se puede resumir cada sentencia en un solo macro con una función de condición o bucle para no repetir esto que tengo.
¿Cómo puedo hacerlo?
Adjunto los macros individuales que he elaborado.
Sub CrearTotalCol8_9()
'Total de columnas 8 & 9
Dim misDatos As Range
Dim miTotal As Range
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, 8).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
End Sub
Sub CrearTotalCol12_13()
'Total de columnas 12 & 13
Dim misDatos As Range
Dim miTotal As Range
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, 12).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
End Sub
Sub CrearTotalCol16_17()
'Total de columnas 16 & 17
Dim misDatos As Range
Dim miTotal As Range
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, 16).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
End Sub
Sub CrearTotalCol20_21()
'Total de columnas 20 & 21
Dim misDatos As Range
Dim miTotal As Range
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, 20).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
End Sub
Sub CrearTotalCol24_25()
'Total de columnas 24 & 25
Dim misDatos As Range
Dim miTotal As Range
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, 24).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
End Sub
Sub CrearTotalCol28_32()
'Total de columnas 28 & 32
Dim misDatos As Range
Dim miTotal As Range
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, 28).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
End Sub

1 Respuesta

Respuesta
1
Te agregué las instrucciones para convertir tus rutinas en un bucle.
Espero responda a tus requerimientos. Considero que en la última hay un error de tipeo y se trata de sumar las col 20 y 29, ¿puede ser? Sino modificá el valor máximo del bucle que ahora llega hasta 28
Sub CrearTotalCol()
'Total de columnas 8 hasta 28, cada 4 col
Dim misDatos As Range
Dim miTotal As Range
Dim micol As Integer
micol = 8
While micol <= 28
Set misDatos = Range("A5").CurrentRegion
Set misDatos = _
misDatos.Offset(2, micol).Resize(misDatos.Rows.Count - 2, 2)
Set miTotal = misDatos.Rows(misDatos.Rows.Count + 2)
miTotal = "=sum(" & misDatos.Columns(1).Address(True, False) & ")"
micol = micol + 4
Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas