Macro que sume agregue un valor

Les escribo desde Chile, ya en otras oportunidades uds me han ayudado muy gratamente y eficientemente, resolviendo de la mejor manera mis dudas.-
Ahora tengo una duda sobre una macro, les paso a describir el problema:
Requiero tener una celda que sea la suma de una columna definida
=SUMA(A3:A15)
Ahora bien si la suma es igual 0 (cero) que muestre como resultado 0 (cero)
Pero si la suma es superior a 0 (cero) que automáticamente vaya agregando un valor (por ejemplo 400.000/12)
De tal modo que al haber sumado las 12 celdas precedentes la suma se incremente en 400.000, pero si se suman 11 celda el valor se incremente en 11 partes de 400.000.-
Ahora bien esto se podría hacer a través de una formula escrita directamente en la celda, pero la idea es que esto se ejecute en forma oculta sin que se vea en la celda que totaliza la suma en cuestión.-

1 respuesta

Respuesta
1

Te mando mi solución pero antes una aclaración sobre tu pregunta:

La fórmula =SUMA(A3:A15) está sumando 13 celdas y no 12 por lo que he hecho la macro sumando 13 celdas:

Ejecutando esta macro lo tienes solucionado:

Sub sumar()
Range("a3").Select
For f = 1 To 13
Total = Total + ActiveCell.Value
If ActiveCell.Value <> "" Then cuenta = cuenta + 1
ActiveCell.Offset(1, 0).Select
Next
ActiveCell.Value = Round(Total + (400000 / cuenta), 2)
ActiveCell.NumberFormat = "#,##0.00"
End Sub

recuerda finalizar y puntuar

me queda alguna duda, copie el código que me envío usted, lo hice en un modulo, pero me sucede que al realizar la suma de las 13 celdas no se ejecuta la macro... como debo hacerlo???

Jotoral32 la macro está probada y funciona perfectamente. El procedimiento es el siguiente:

-Copiar la macro a un módulo de visual basic

-Posicionarnos en la hoja donde están los números a sumar y ejecutar la macro.

ok.. eso lo entiendo perfecto, mi pregunta es si no existe la posibilidad que la macro se vaya ejecutando cada vez que ingresas un numero en alguna de las 13 celdas que componen la suma final??

Claro, aquí lo tienes. En este caso es un evento por lo que esta macro la tienes que copiar en el objeto hoja que contiene los datos a sumar, no en un módulo. La macro se autoejecutará siempre que modifiques cualquier celda del rango A3:A15

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a3:a15")) Is Nothing Then
Range("a3").Select
For f = 1 To 13
Total = Total + ActiveCell.Value
If ActiveCell.Value <> "" Then cuenta = cuenta + 1
ActiveCell.Offset(1, 0).Select
Next
ActiveCell.Value = Round(Total + (400000 / cuenta), 2)
ActiveCell.NumberFormat = "#,##0.00"
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas