Visual Basic para Aplicaciones - Sumar si el valor de la celda es menor a cero

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 6 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Sumar si el valor de la celda es menor a cero

Publicado por Tommy (3 intervenciones) el 04/01/2019 04:14:25
Estimados,
Estoy intentando hacer en vba excel una funcion que me sume los valores que hay en una fila, si el valor de la primera celda a evaluar es <0 que sume esa celda con la siguiente celda luego que revise si ese resultado es <0 y si es <0 que lo sume con la celda siguiente y si no la variable resultado sera igual a la celda siguiente que sea <0 de la fila evaluada. Espero haberme explicado bien, las gracias anticipadas!
Este es el codigo con el que he tratado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Function miSuma(miRango as Range) as long
 
Dim miCelda as Range
Dim cont as Integer
 
Dim resultado as Long
 
 
For each miCelda in miRango
cont=cont + 1
 
If miCelda.Value<0 then
 
resultado= miCelda.Cells(0,cont -1)+miCelda.Cells(0,cont)
 
resultado=resultado
 
Else
 
resultado = miCelda. Cells(0,cont).Value
end If
 
 
Next miCelda
 
miSuma=resultado
end Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Sumar si el valor de la celda es menor a cero

Publicado por Antoni Masana (498 intervenciones) el 04/01/2019 12:26:53
Si entiendo bien la explicación suma mientras el resultado sea negativo, cuando es positivo pone el sumatorio a cero hasta encontrar un nuevo negativo.

1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
 
Function miSuma(miRango As Range) As Long
    Dim miCelda As Range, resultado As Long
 
    resultado = 0
    For Each miCelda In miRango
        resultado = resultado + miCelda.Text
        If resultado >= 0 Then resultado = 0
    Next
    miSuma = resultado
End Function


Pongo un par de ejemplos:

1
2
3
4
5
6
Numero   Parcial       Misuma(A1:A5)) = -10
    -5        -5
    -2        -7
     5        -2
    -3        -5
    -5       -10


1
2
3
4
5
6
7
Numero   Parcial       Misuma(A1:A6) = -8
    -5        -5
    -2        -7
     8         1 -> 0
     7         7 -> 0
    -3        -3
    -5        -8

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 6 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Sumar si el valor de la celda es menor a cero

Publicado por Tommy (3 intervenciones) el 04/01/2019 23:34:09
Estimado, asi mismo es, muchisimas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar