Suma condicional

26/07/2008 - 14:59 por Lucas | Informe spam
Buenas gente, a ver si me pueden ayudar, necesito sumar valores de una tabla
hasta que se encuentre con un cero en una celda y que siga sumando los
siguientes hasta que se encuentre con otro 0 (cero) como para ir sacando
subtotales. Ya he probado con variables de la función "si" pero no atino con
ninguna, incluso con la "si" combinada con "y". Se les agradece la ayuda.
Saludos

Lucas

Preguntas similare

Leer las respuestas

#1 MRoCFe
26/07/2008 - 18:04 | Informe spam
Hola! Lucas:
a) Con el botón derecho de tu ratón selecciona (parte inferior
izquierda de la hoja) la etiqueta de la hoja en la que deseas el
efecto (Hoja1, por ejemplo) y selecciona Ver Código.

b) Se te abrirá una ventana en la que pegarás el siguiente código VBA:


Public Sub SubTotalesPorCero()
On Error Resume Next
If ActiveCell.Offset(-1, 0) <> "" Then ActiveCell.End(xlUp).Select
On Error GoTo 0
Set MiRango = Range(ActiveCell, ActiveCell.End(xlDown))
If ActiveCell.End(xlDown).Row = [IV1].End(xlDown).Row Then
MsgBox "Su selección es inapropiada. Reintente."
Exit Sub
End If
MiRango.Offset(1, 1).ClearContents
cf = MiRango(1).Address(False, False)
For Each Celda In MiRango
If Celda = 0 Then
Celda.Offset(0, 1).Formula = "= SUM(" & cf & ":" &
Celda.Address(False, False) & ")"
cf = Celda.Offset(1, 0).Address
End If
Next Celda
If MiRango.End(xlDown).Offset(0, 1) = "" Then _
MiRango.End(xlDown).Offset(0, 1).Formula = _
"= SUM(" & cf & ":" & MiRango.End(xlDown).Address(False, False) &
")"
Set MiRango = Nothing
End Sub


c) Cierra esas ventanas del ambiente Visual Basic y retorna a tu
planilla Excel.

d) Crea un botón en tu hoja que ejecute la macro recién instalada y
llamada: SubTotalesPorCero.

d) Selecciona un número cualquiera de tu columna de datos y corre la
macro: a la derecha de la columna de datos verás aparecer las fórmulas
que necesitas.

Espero que te sea útil.

Saludos.
Respuesta Responder a este mensaje
#2 Héctor Miguel
27/07/2008 - 07:45 | Informe spam
hola, Lucas !

... necesito sumar valores de una tabla hasta que se encuentre con un cero en una celda
y que siga sumando los siguientes hasta que se encuentre con otro 0 (cero) como para ir sacando subtotales.
Ya he probado con variables de la funcion "si" pero no atino con ninguna, incluso con la "si" combinada con "y"...



serviria si comentas algunos detalles que permitan (re)construir el modelo o la situacion que necesitas resolver (p.e.)
- cual es el rango donde se encuentra "una tabla" (en que hoja, cuales son sus titulos de fila/columna, el tipo de datos)
- cual es la columna donde "una celda" podria contener un cero
- si se trata de la misma columna de donde quieres "sumar" los subtotales (o cual seria la otra columna ?)
- en donde quieres obtener el "resumen ?" con los subtotales encontrados (hoja, rango, titulos, etc.)
- tambien sirve si expones las formulas que ya has intentado (y que obtienes y que esperabas)

considera que de este lado del mensaje NO "se ve" lo mismo que tu estas viendo :D

saludos,
hector.
Respuesta Responder a este mensaje
#3 Lucas
28/07/2008 - 13:31 | Informe spam
Buen día grupo, (aplíquese a Argentina):
en primer lugar les agradezco las respuestas, ahora voy a probar lo que dice
MRoFEc y gracias por la atención Héctor, si no me funciona el código VBA
anterior comento bien detalladamente lo que quiero hacer, gracias de nuevo.
Saludos

Lucas
Neuquén, Neuquén, Argentina

escribió en el mensaje de
noticias:
Hola! Lucas:
a) Con el botón derecho de tu ratón selecciona (parte inferior
izquierda de la hoja) la etiqueta de la hoja en la que deseas el
efecto (Hoja1, por ejemplo) y selecciona Ver Código.

b) Se te abrirá una ventana en la que pegarás el siguiente código VBA:


Public Sub SubTotalesPorCero()
On Error Resume Next
If ActiveCell.Offset(-1, 0) <> "" Then ActiveCell.End(xlUp).Select
On Error GoTo 0
Set MiRango = Range(ActiveCell, ActiveCell.End(xlDown))
If ActiveCell.End(xlDown).Row = [IV1].End(xlDown).Row Then
MsgBox "Su selección es inapropiada. Reintente."
Exit Sub
End If
MiRango.Offset(1, 1).ClearContents
cf = MiRango(1).Address(False, False)
For Each Celda In MiRango
If Celda = 0 Then
Celda.Offset(0, 1).Formula = "= SUM(" & cf & ":" &
Celda.Address(False, False) & ")"
cf = Celda.Offset(1, 0).Address
End If
Next Celda
If MiRango.End(xlDown).Offset(0, 1) = "" Then _
MiRango.End(xlDown).Offset(0, 1).Formula = _
"= SUM(" & cf & ":" & MiRango.End(xlDown).Address(False, False) &
")"
Set MiRango = Nothing
End Sub


c) Cierra esas ventanas del ambiente Visual Basic y retorna a tu
planilla Excel.

d) Crea un botón en tu hoja que ejecute la macro recién instalada y
llamada: SubTotalesPorCero.

d) Selecciona un número cualquiera de tu columna de datos y corre la
macro: a la derecha de la columna de datos verás aparecer las fórmulas
que necesitas.

Espero que te sea útil.

Saludos.
Respuesta Responder a este mensaje
#4 Lucas
28/07/2008 - 18:41 | Informe spam
MR0CFe :
Estuve haciendo una pequeña pruebita con la macro que me diste pero me lanza
un error. Te dejo la captura para ver si tiene solución desde ya te
agradezco la ayuda y por tomarte la molestia de hacer un código y todo para
ayudar a un simple usuario sin conocimientos avanzados. Saludos

Lucas

PD.: mensaje copiado y pegado en uno nuevo ya que el mensaje original con
los adjuntos parece que nunca llegó, es por esta razón no incluyo las
imágenes en este post

escribió en el mensaje de
noticias:
Hola! Lucas:
a) Con el botón derecho de tu ratón selecciona (parte inferior
izquierda de la hoja) la etiqueta de la hoja en la que deseas el
efecto (Hoja1, por ejemplo) y selecciona Ver Código.

b) Se te abrirá una ventana en la que pegarás el siguiente código VBA:


Public Sub SubTotalesPorCero()
On Error Resume Next
If ActiveCell.Offset(-1, 0) <> "" Then ActiveCell.End(xlUp).Select
On Error GoTo 0
Set MiRango = Range(ActiveCell, ActiveCell.End(xlDown))
If ActiveCell.End(xlDown).Row = [IV1].End(xlDown).Row Then
MsgBox "Su selección es inapropiada. Reintente."
Exit Sub
End If
MiRango.Offset(1, 1).ClearContents
cf = MiRango(1).Address(False, False)
For Each Celda In MiRango
If Celda = 0 Then
Celda.Offset(0, 1).Formula = "= SUM(" & cf & ":" &
Celda.Address(False, False) & ")"
cf = Celda.Offset(1, 0).Address
End If
Next Celda
If MiRango.End(xlDown).Offset(0, 1) = "" Then _
MiRango.End(xlDown).Offset(0, 1).Formula = _
"= SUM(" & cf & ":" & MiRango.End(xlDown).Address(False, False) &
")"
Set MiRango = Nothing
End Sub


c) Cierra esas ventanas del ambiente Visual Basic y retorna a tu
planilla Excel.

d) Crea un botón en tu hoja que ejecute la macro recién instalada y
llamada: SubTotalesPorCero.

d) Selecciona un número cualquiera de tu columna de datos y corre la
macro: a la derecha de la columna de datos verás aparecer las fórmulas
que necesitas.

Espero que te sea útil.

Saludos.
Respuesta Responder a este mensaje
#5 AnSanVal
29/07/2008 - 10:44 | Informe spam
Hola Lucas.

1.- Escribe en B2: =SI(A2=0;SUMA($A$1:A1)-SUMA($B$1:B1);0)
2.- Haz doble clic en el punto de relleno de B2 (esquina inf. Derecha).

Nota: Si tus celdas con ceros NO son realmente ceros (sino celdas vacías), sustituye el punto 2 por Copiar/Pegar hacia
abajo hasta donde necesites.

Saludos desde Tenerife: Antonio.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida