Macro para sumar rangos

Buen días, espero que me puedan ayudar con este problema que tengo:
  A B C D
Debe 10 Diez Haber
1000 2500
150 (vacía)
(Vacía) ( TOTAL SUMA) (vacía)
Debe 20 Diez Haber
150 (vacía)
(Vacía) ( TOTAL SUMA) (vacía)
Lo que quiero es que sume el debe y el haber en la ultima fila vacía ( que lo ponga donde dice total suma)

1 Respuesta

Respuesta
1
Quisiera saber cual es la utilidad de la columna B y C (10, diez, 20, diez). La otra que debes especificar es si (total suma) se encuentra escrito en las celdas.
No donde dice total suma me refería a la fila donde quiero que valla la suma de por así decirlo 20 Veinte (que ah puse 20 Diez que vendría a ser el nombre de una agrupación )
Para que me puedas entender mejor tengo ordenado por grupos y como ves hay una filña de intervalos entre grupos que donde debe ir las sumas ( es decir donde dice total suma )
Si te entiendo bien. Las sumas deben luego de la ultima fila con datos, sea esta en el debe o en el haber.
Ya tengo la planilla en mi cabeza. La trabajo y te la subo mañana durante el día.
Ok espero tu respuesta
Me dio mucho que pensar tu pregunta. Finalmente logré llegar a una respuesta con reducidas líneas de código.
El código que te envío contiene un procedimiento para sumar módulo a módulo y otro para sumar todos los módulos, con la condición de que siempre estén separados por una única línea. Según el código siempre debes estar posicionado en una celda con contenido "debe" para poder lanzar los procedimientos.
Te dejo el código de ambos procedimientos a continuación, y al final de la respuesta un link para bajar el archivo donde desarrollé la respuesta ( el formato del archivo es excel 2007 habilitado para macros)
Sub Sumamodulo()
Dim poscar As Integer
Dim verificacelda As Integer
Dim startsumrow As Integer
Dim finishsumrow As Integer
If ActiveCell.Value = "Debe" Then
    ActiveCell.Offset(1, 0).Select
    poscar = InStr(2, ActiveCell.Address, "$")
    startsumrow = Right(ActiveCell.Address, Len(ActiveCell.Address) - poscar)
    verificacelda = 0
    Do Until verificacelda = 2
        If Val(ActiveCell.Value) = 0 Then
        verificacelda = verificacelda + 1
        ActiveCell.Offset(0, 3).Select
        If Val(ActiveCell.Value) = 0 Then
            ActiveCell.Offset(1, -3).Select
            verificacelda = verificacelda + 1
        Else
            ActiveCell.Offset(1, -3).Select
            verificacelda = 0
        End If
        Else
        ActiveCell.Offset(1, 0).Select
        verificacelda = 0
        End If
    Loop
        ActiveCell.Offset(-2, 0).Select
        poscar = InStr(2, ActiveCell.Address, "$")
        finishsumrow = Right(ActiveCell.Address, Len(ActiveCell.Address) - poscar)
        ActiveCell.Offset(1, 0).Select
        ActiveCell.Value = "=sum(A" & startsumrow & ":A" & finishsumrow & ")"
        ActiveCell.Offset(0, 3).Select
        ActiveCell.Value = "=sum(d" & startsumrow & ":d" & finishsumrow & ")"
    MsgBox "Módulo sumado", 0 + 48 + 0, "Libro Contable"
Else
    MsgBox "Debe posicionarse en la celda 'debe' de cada módulo", 0 + 48 + 0, "Libro Contable"
End If
End Sub
Sub Sumaglobal()
If ActiveCell.Value = "Debe" Then
    Do While ActiveCell.Value = "Debe"
        Call Sumamodulo
        ActiveCell.Offset(1, -3).Select
    Loop
    MsgBox "Todos los módulos han sido sumados", 0 + 48 + 0, "Libro Contable"
Else
    MsgBox "Debe posicionarse en la celda 'debe' de cada módulo", 0 + 48 + 0, "Libro Contable"
End If
End Sub
PD: Ambos deben estar en el mismo módulo de VBA.
Link del archivo : http://www.megaupload.com/?d=ML4TJEP5
Recuerda valorar la respuesta y cerrar la pregunta.
estuvo de mil ! gracias solo una cosa mas explicame estas funciones un poco si no te molestace
poscar = InStr(2, ActiveCell.Address, "$") 
 finishsumrow = Right(ActiveCell.Address, Len(ActiveCell.Address) - poscar)
Poscar es una variable que significa posición del carácter.
Busco en la dirección de la celda (ejem: $c$14) empezando desde el segundo carácter "$" y en poscar guardo la posición del carácter en la cadena ( en este caso 3)
Con la línea siguiente selecciono los caracteres a la derecha de la cadena (en este caso 2 caracteres; los 6 del largo total, menos los 4 de la posición inicial del carácter).
Es ahí que obtengo el número de la última fila para trabajarla en las sumas.
Recuerda valorar la respuesta y finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas