Suma con distintos sumandos desde celda relativa

He de realizar varias sumas en una misma hoja y de distintos sumandos. Sabemos las columnas a sumar pero no el número de filas ni el inicio para usar referencias absolutas.

he probado a usar la pulsación de teclas en la macro como sendkeys "%{=}", True para hacer la autosuma, pero al introducirlo de nuevo como haríamos con el teclado pulsando Alt+= queda la función sin rango, es decir =suma() y el correspondiente error.

Intento aclarar la poniendo algunos casos con los que puedo encontrarme:

Resultado de la suma en A10 del rango F10:F8

Resultado de la suma en A15 del rango F15:F12

Resultado de las suma en A17 del rango F17

Siempre dejo una fila o más entre bloque de sumas para poder buscar la celda vacía para contar o como hago manualmente pulsando la tecla fin y después el cursor para subir.

1 respuesta

Respuesta
1

Lo que quieres es hacer subtotales de la columna F, es decir, ¿cada qué hay aun espacio hay que hacer una suma?

Envíame tu archivo con ejemplos para adaptar una macro, envíame de ser posible en una hoja 1 ejemplo y en otra hoja otro ejemplo, me pones cómo deberían quedar las sumas.

ya te mande el correo, espero que sea lo suficientemente aclaratorio

Se me pasó un detalle y creo que puede ahorrar problemas para hacer la macro.

No hay ningún problema para crear la fórmula en la columna F y después moverla a la columna A. Es decir, si queremos sumar las celdas F10:F18, podemos crear la suma en la celda F19 y después moverla a la celda A18.

Espero que eso pueda facilitar el automatizar las sumas.

Otro tema que puede complicarnos es el haber sumas de una sola fila. En ese caso tengo creado un inputbox donde coloco un código o la palabra fin para cerrar el bucle de búsqueda de códigos e iniciar la suma del rango de celdas.

Si el sumar 1 fila o varias filas complica el trabajo puedo crear mediante un IF ELSE THEN dos palabras clave y así diferenciar la suma.

fin1 hace suma de 1 sóla fila y valdría con un simple

Activecell.offset(-1,0).range("A1").Select

Activecell.formulaR1C1 = "=RC[5]"

fin2 hace la suma del rango de 2 o más filas. con la macro que no consigo hacer 

Me refiero a que los datos están en la columna F y cada vez que se encuentre un espacio hay que hacer un subtotal.

SI ya estás empleando un macro, puedo revisarla o crear una nueva para hacer los totales.

Envíame tu archivo con ejemplos para adaptar una macro, envíame de ser posible en una hoja 1 ejemplo y en otra hoja otro ejemplo, me pones cómo deberían quedar las sumas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario "David Carreras" y el título de esta pregunta.

Remato la macro durante esta semana, la suelo hacer en ratos libres de trabajo, y te mando la macro completa y así revisas y la reajustamos debidamente.

Gracias

Prueba la siguiente macro, Suma los valores de la columna F y te pone los subtotales en la columna A

Sub subtotales()
'Por.Dante Amor
    For i = 2 To Range("F" & Rows.Count).End(xlUp).Row + 1
        If Cells(i, "F") = "" Then
            Cells(i - 1, "A") = subtot
            subtot = 0
        End If
        subtot = subtot + Cells(i, "F")
    Next
End Sub

Si tus datos están como aparece en la siguiente imagen y es lo que necesitas, la macro te va a funcionar.

Te anexo la macro, le hice unos pequeños ajustes

Sub subtotales()
'Por.Dante Amor
    Columns("A").ClearContents
    For i = 7 To Range("F" & Rows.Count).End(xlUp).Row + 1
        If Cells(i, "F") = "" Then
            Cells(i - 1, "A") = subtot
            subtot = 0
            End If
        subtot = subtot + Cells(i, "F")
    Next
End Sub

Saludos.Dante Amor

¡Gracias!  por tu interés en ayudarme, aunque no era exactamente lo que buscaba cuento contigo para revisar la macro completa.

te adjunto la parte de la suma que he acabado haciendo a ver que te parece, cuando la complete te mando toda entera

' cuenta cuantas filas tiene la suma a realizar

    z = 0
    ActiveCell.Offset(-1, 5).Range("A1").Select
    Do
    If ActiveCell.Value = "" Then Exit Do Else z = z + 1
    ActiveCell.Offset(-1, 0).Range("A1").Select
    Loop

' Comprueba si hay 1 o más filas antes de hacer la suma y reajusta el cursor

    If z = 1 Then x = 0 Else x = z

' Regresa a la columna A de la fila correspondiente

    ActiveCell.Offset(z, -5).Range("A1").Select
' Hace la suma de la columna F por lineas creadas mediante la variable x
    ActiveCell.FormulaR1C1 = "=SUM(r[" & "-" & (x) & "]C[5]:RC[5])"

Por supuesto falta la designación de variables y el inicio y fin del sub form.

La macro hace lo que enviaste en tu ejemplo, de hecho si borras los datos que me enviaste de la columna A y ejecutas la macro, realiza la suma de tu ejemplo.

Ejecuta la macro.

¡Gracias! 

cierro la pregunta y cuando acabe la macro por completo abro una nueva pregunta y la revisamos juntos.

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Saludos. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas