Autosuma

Estimado amigo:
Quisiera saber si tienes el código que te realize la autosuma, esto es quiero que una macro realize exactamente la suma de las celdas que están arriba o al lado de por celda, como lo hace el botón autosuma, el detalle es que tengo una macro que realiza procesos y al terminar me deja columnas con cantidades pero tengo que hacer la suma manual ya que no siempre son las mismas celdas arriba, a veces 3, 4, 10 etc. Y no me se el código que realize esto como lo hace el botón autosuma, ya vez que si se oprime el botón automáticamente te selecciona las celdas de arriba o al lado pero quiero hacerlo en código.
Gracias por tu ayuda y espero haber sido claro.

1 Respuesta

Respuesta
2
En realidad, no tenía ningún código que lo hiciera, pero ahora sí. Acabo de desarrollar esto:
Sub MiAutoSuma()
'Busca arriba
If Not IsEmpty(ActiveCell.Offset(-1)) Then
If Not IsEmpty(ActiveCell.Offset(-2)) Then
RangSuma = Range(ActiveCell.Offset(-1), ActiveCell.Offset(-1).End(xlUp)).Address(False, False)
Else
RangSuma = ActiveCell.Offset(-1).Address(False, False)
End If
'Busca a la izquierda
ElseIf Not IsEmpty(ActiveCell.Offset(0, -1)) Then
If Not IsEmpty(ActiveCell.Offset(0, -2)) Then
RangSuma = Range(ActiveCell.Offset(0, -1), ActiveCell.Offset(0, -1).End(xlToLeft)).Address(False, False)
Else
RangSuma = ActiveCell.Offset(0, -1).Address(False, False)
End If
'Busca abajo
ElseIf Not IsEmpty(ActiveCell.Offset(1)) Then
If Not IsEmpty(ActiveCell.Offset(2)) Then
RangSuma = Range(ActiveCell.Offset(1), ActiveCell.Offset(1).End(xlDown)).Address(False, False)
Else
RangSuma = ActiveCell.Offset(1).Address(False, False)
End If
'Busca a la derecha
ElseIf Not IsEmpty(ActiveCell.Offset(0, 1)) Then
If Not IsEmpty(ActiveCell.Offset(0, 2)) Then
RangSuma = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 1).End(xlToRight)).Address(False, False)
Else
RangSuma = ActiveCell.Offset(0, 1).Address(False, False)
End If
End If
If Len(RangSuma) > 1 Then
ActiveCell.Formula = "=SUM(" & RangSuma & ")"
Else
'Qué hace si no tiene qué sumar. Por ejemplo:
' ActiveCell.Value = "OJO, SIN formula de SUMA"
End If
End Sub
Está anulado el caso de que no tenga nada para sumar. Depende de ti, si quieres habilitar esa devolución.
Pruébalo y coméntame
Esto debería resolver tu pregunta. Si así fuera, agradeceré un comentario y que la finalices.
Si no, pregúntame de nuevo.
Un abrazo!
Fernando
"Me lo explicaron y lo olvidé,
lo leí y lo entendí,
lo hice y lo aprendí".
(Considera que la valoración que figura predeterminada
es 3/5. Tal vez quieras cambiarla...)
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.
Agradezco tu desinteresada ayuda, el código fue magnifico estuve analizándolo y pues de hecho me va a ayudar a crear otras cosas más con estas ideas.
Gracias por todo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas