Macro en excel – acumular suma en una misma celda

Macro en excel - acumular la suma en una misma celdaCon base en inquietud realizada por uno de nuestros integrantes de la Comunidad Triple EEE se ha creado este artículo en donde se explica a través de Macro en Excel cómo acumular el calculo de una suma en una misma celda cada que se ingrese un nuevo valor, es decir, que cuando se ingrese un nuevo dato o número sobre una celda, este se sume al valor que estaba anteriormente en la celda.

Para dar solución a este caso, se desarrolló Macro en Excel en donde se han programado dos eventos de la hoja de cálculo para conseguir el objetivo propuesto, los dos eventos son los siguientes:

Especialistas En Excel

SelectionChange: Evento que se activa a partir que se hace click sobre determinada celda de la hoja de Excel, a partir de aquí se captura el valor que se encuentra en la celda.

Change: Evento que se activa cuando se modifica el valor de la celda, a partir de este evento se adiciona el valor ingresado a el dato capturado en el evento SelectionChange.

Con el uso de los dos eventos anteriormente descritos se desarrolla solución donde se integran estas dos con aplicación de variables que permiente acumular el valor del calculo de la suma y controlar las veces que se debe sumar el nuevo valor ingresado.

A continuación el paso a paso de la macro en Excel desarrollada para dar solución al caso:

1) Comunidad Triple EEE, Únete >> https://goo.gl/FrswaC

2) Suscríbete a este curso gratuito para aumentar tu productividad en Excel un 80% y obtén 4 regalos adicionales al suscribirte a este curso: http://goo.gl/zNqh0o

Artículos anteriores:

  1. #ParticipaEEE: ¿Cuántos Jueves hay en un año, resolver con Excel?
  2. Día 40 – Consultar empleado en Excel mostrando sus datos y su Foto
  3. Día 39 – Simule resultados con los Escenarios de Excel
  4. Día 38 – Macro en Excel para Eliminar fila con doble Click
  5. Día 37 – Ejecutar Macro en Excel cuando cambie el valor de una Celda

54 comentarios en “Macro en excel – acumular suma en una misma celda”

  1. Excelente ejercicio.
    Gracias por compartirlos pues son de gran utilidad para el uso cotidiano.
    Te deseo un feliz año nuevo lleno de salud y proyectos.
    Danilo.

    1. Especialistas En Excel

      Hola Danilo, con gusto, esperamos que también tengas un muy feliz año 2016, síguenos en nuestras redes sociales y participa de todo el contenido que se viene para éste año. Un abrazo

  2. Pingback: Función SIFECHA en Excel

  3. OSCAR IVAN PIÑA RAMOS

    Hola me gustaria aprender mas de excel, sobre todo hacer un formulario en excel que me muestre la venta de un producto asi como la gráfica de su compartamiento de venta.

    1. Especialistas En Excel

      Hola Óscar, estaremos estudiando tu propuesta para un futuro contenido, síguenos y espera mucho más contenido de utilidad, saludos. Gracias por comentar.

    1. Especialistas En Excel

      Hola Harold, lo que debes hacer es utilizar el código utilizado en la macro, simplemente cambiando la celda es decir, ya no F9 sino B11 o la que sea necesaria. Gracias por comentar, saludos

      1. Esta parte me gustaría que la explicaras no la entendí, he tratado de hacerlo y nome funciona. Si pudieras compartir el código con varias celdas sería mucho mejor o realizar un vídeo para seguir los pasos.

        Mil gracias

  4. Pingback: 8 Trucos en Excel para comparar datos rápidamente

  5. Estimado Alfonso.

    Muchas gracias por el ejercicio, me gustaría saber si en este en este ejercicio se puede
    usar números decimales, ya que solo me funciona con enteros, y si es el caso que debería hacer para que me funcione con decimales.
    de ante mano mil gracias

    saludos

    1. Cordial saludo
      para sumar decimales en la declaración de variable valor cambiar la palabra long por double.
      para retornar automáticamente a la celda F 9 en la declaración selectionchange adicione las siguientes lineas
      If Target.Address = “$F$”10 Then
      Sheets(“EEE”).Range(“F10”).Select
      End If

      Gracias al equipo de EEE por el excelente material que nos ofrecen

      1. Especialistas En Excel

        Hola Leo, dejaremos tu comentario para que la comunidad Triple EEE lo vea, opine, lo disfrute, gracias por participar, comentar y compartir. Saludos

  6. Pingback: Función DIAS.LAB en Excel - Calcular Días laborables

  7. Pingback: Función BDCONTAR en Excel

  8. Pingback: Función ES.IMPAR en excel

  9. Pingback: Macro para transferir datos de una hoja a otra – Caso de Noelia Parte 2 de 2 - Especialistas En Excel

  10. Pingback: Sumar valores en Excel que se encuentren en un rango de fechas

  11. Pingback: Función ESNOD en Excel

  12. Hola que bien este video, pero me gustaría que me indicaras como hago para hacer sumas condicionales y ubicar el valor en una celda determinada. Esq ue tengo que sumar varios valores que se encuentran en una lista, cada uno de ellos con fechas distinta y un código de gasto también diferente, por lo tanto debere colocar la suma por fecha en cada código.

  13. Gracias por compartir tus conocimientos, interesante tu video ; estoy trabajando en un proyecto y ese proceso es de gran utilidad para mi. lo aplique pero no me da, sale error. Me podrías ayudar que estoy haciendo mal:

    Option Explicit
    Dim valor As Long
    Dim cantidadveces As Integer
    ———————————————————————————————————————

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = “$C$6” Then
    cantidadveces = cantidadveces + 1

    If cantidadveces > 1 Then
    Exit Sub
    End If

    valor = valor + Sheets(PROMEDIOS).Range(“C6”).Value
    Sheets(“PROMEDIOS”).Range(“C6”).Value = valor
    End If
    End Sub
    —————————————————————————————————————————
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    valor = 0
    cantidadveces = 0

    If Target.Address = “$C$6” Then
    valor = Sheets(“PROMEDIOS”).Range(“C6”).Value
    End If
    End Sub

    1. Especialistas En Excel

      Hola Jesús, cuando utilizas un lenguaje de programación debes tener cuidado con la escritura, pues un solo punto te puede generar un error. en la línea valor = valor + Sheets(PROMEDIOS).Range(“C6”).Value, PROMEDIOS debería estar entre comillas Sheets(“PROMEDIOS”).Range(“C6”).Value. Gracias por comentar, saludos

  14. Amigo he hecho exactamente lo de tu vídeo y no me responde, cuando trato de ingresar un numero en la celda F9 me sombrea en vba el nombre de la hoja y me dice que la variable no se ha definido. Me podrías ayudar, trabajo en excel 2013

    1. Especialistas En Excel

      Hola Jesús, tienes que fijarte bien los parámetros que se trabajan en el video, una de las razones puede ser por el nombre que tengas en tu hoja. Gracias por comentar

  15. Pingback: Macro en Excel para acumular suma en una misma celda

  16. Juan Gregorio Arboleda Q.

    Tus videos son los mas claros, gracias por el empeño que le colocas para que sean muy claros, como para que acumule pero los datos digitados desde otra celda?

  17. Buenas Tardes estoy implementando tu macro pero necesito que se ejecute desde la fila a2 hasta a100 porque son muchos productos podrias ayudarme

  18. Pingback: Macro en Excel para acumular suma en varias celdas

  19. Buenas Tardes, muy expicativo el video. Tengo una consulta. Como tendria que hacer para que el contador se ponga en Cero nuevamente? Saludos desde Argentina.

    1. Especialistas En Excel

      Hola Gotchii, gracias por comentar, debes asignarle a una variable el valor de cero, cuando el proceso de suma termine vuelves a asignarle cero con esa variable o colocar un botón que le asigne cero a esa celda. Saludos

  20. Hola..buen día..muy interesante este vídeo..pero quisiera saber como hago para que el valor de esa casilla se muestre en otra..es decir, tengo tres columnas..”CANTIDAD, ENTRADA, SALIDA” lo que quiero es..que en entrada se acumulen los valores..por ejemplo..llegaron 2 productos nuevos y si los agrego en entrada que se vean reflejados en cantidad + lo que ya tenía antes..lo mismo para hacer la resta cuando salgan..no se si me explico..de antemano muchas gracias..

  21. Hola, Gracias por su respuesta; intente nuevamente y conseguí que funcionara.
    Ahora, son varias hojas con las que tengo que trabajar. Existe otra forma que no sea celda por celda????
    Muchas gracias por su atención.

  22. Hola, me funciono perfecto el contenido del segmento ” Macro en Excel para acumular suma en varias celdas”.
    Mil gracias por compartir su conocimiento!!!!!!!
    Saludos.

    1. Especialistas En Excel

      Hola Alanda, gracias a ti por hacer parte de la comunidad Triple EEE, seguiremos trabajando para compartir contenido de utilidad. Saludos

  23. buena noche.
    Mediante el video para hacer la macro de suma acumulada hago todo el proceso que se me indica pero me aparece un error.
    Option Explicit
    Dim valor As Long
    Dim cantidadVeces As Integer

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = “$F$9” Then
    cantidadVeces = cantidadVeces + 1

    If cantidadVeces > 1 Then
    Exit Sub
    End If

    valor = valor + Sheets(“EEE”).ranger(“F9”).Value
    Sheets(“EEE”).ranger(“F9”).Value = valor

    End If

    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    valor = 0
    cantidadVeces = 0

    If Target.Address = “$F$9” Then
    valor = Sheets(“EEE”).ranger(“F9”).Value
    End If

    End Sub
    me podrias notificar en donde cometi el error. ya lo he intentado varias veces y me genera el mismo error

    1. Especialistas En Excel

      Hola Jonatan, lo mejor es que veas el vídeo detenidamente, recuerda que cualquier caracter adicional o faltante generará errores. Saludos

    1. Especialistas En Excel

      Hola Alberto, gracias por comentar, como la variable “valor” se inicializa en cero, al ejecutar el código sin asignar otra variable a la celda adicional, se le asigna el cero a la primera celda. Esperamos que lo puedas resolver. Saludos

  24. Estimado Alfonso.
    Muy bueno el video, me ayudó en lo que necesitaba. Sin embargo, se me presentó un inconveniente, ya que yo necesito sumar números decimales, pero la fórmula me lo redondea a entero, es decir por ejemplo tengo un monto inicial de 20.00 y quiero sumarle 1.08, lo lógico sería que el resultado sea 21.58, pero el cuadro arroja 21.00 o 22.00.
    Te agradecería muchisimo que me ayudes con ese inconveniente.
    Gracias.

    1. Especialistas En Excel

      Hola Juan Carlos, recomendamos en Dim valor As Long cambiarlo a Dim valor As Double, ya que Long es un entero largo. Pruébalo, gracias por comentar, saludos

  25. Pingback: Validar una celda para que sólo permita texto

  26. Saludos,
    Me podrían ayudar con un pequeño ejercicio por favor ?
    Solo seria que la columna A:A se sumase con la B:B y arrojara el resultado en la celda C.
    Pero quisiera hacerlo con Worksheet_Change(ByVal Target As Range).
    Gracias por su ayuda…

    1. Especialistas En Excel

      Hola ANA,
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = 1 Or Target.Column = 2 Then
      colA = Range(“A1:A10000”)
      colB = Range(“B1:B10000”)
      resultado = Application.WorksheetFunction.Sum(colA, colB, True)
      Sheets(“Hoja1”).Range(“C1”).Value = resultado
      End If

      End Sub
      Suponiendo que 10000 sea un rango suficientemente amplio, serviría un rango así… si lo que quieres es que se sume más de ese rango, utiliza el código del vídeo para encontrar la última fila. Saludos

  27. Hola mi nombre es Julio y mi pregunta es como se puede hacer esto pero que el dato que se quiere sumar sea en otra celda.Por ejemplo: el dato acumulativo esta en (F9) y el dato que quiero que se sume a (F9) esta en la celda (H9).Un saludo y enhorabuena por el canal

    1. Especialistas En Excel

      Hola Julio, mira éste fragmento de código
      Option Explicit
      Dim valor As Double
      Dim cantidadVeces As Integer

      Private Sub Worksheet_Change(ByVal Target As Range)

      If Target.Address = “$F$8” Then
      cantidadVeces = cantidadVeces + 1

      If Sheets(“EEE”).Range(“F9”).Value = -1 Then
      Sheets(“EEE”).Range(“F9”).Value = 0
      Exit Sub
      End If

      If cantidadVeces > 1 Then
      Exit Sub
      End If

      valor = Sheets(“EEE”).Range(“F8”).Value + Sheets(“EEE”).Range(“F9”).Value
      Sheets(“EEE”).Range(“F9”).Value = valor

      End If

      Si utilizas éste código, lo que hará es; sumar lo que coloques en la celda F8 y se sumará a lo que esté en la celda F9, así, F9 será la suma de todo lo que coloques en F8.
      Esperamos haberte ayudado. Saludos

      1. Hola y gracias por responder.
        Funciona correctamente, lo que estoy intentando hacer es que en diferentes celdas realice diferentes operaciones, Ejmp.: Ahora es ,todo lo que pongo en (F8) se suma en (F9) y lo que estoy intentando hacer pero solo salen errores o simplemente no funciona es que lo que ponga en(F8) suma, lo que ponga en (F7)multiplica, lo que ponga en (F6) resta etc. y los resultados se van acumulando en (F9).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *