Producto condicional

Pregunto si hay una fórmula que multiplique los valores de 2 columnas, considerando que se cumplan 2 o más condiciones en otras columnas y luego sume estos productos, lo cual sería algo así como aplicar una fórmula del tipo SUMAPRODUCTO. SI (aunque esto evidentemente no me funcionó). Si no hay una fórmula, quisiera saber si hay alguna forma de lograrlo.

3 respuestas

Respuesta
1
Esto se puede resolver mediante una fórmula matricial. Estas fórmulas se escriben normalmente pero para finalizarlas hay que pulsar CTRL+SHIFT+ENTER. Cuando se hace así luego aparecen entre llaves, p.e.
{=fórmula}
Supongamos una tabla desde A1:D11 con los rótulos en la primera fila y donde las dos primeras columnas son importes, la columna C son colores (rojo, verde, azul) y la columna DE son zonas (norte, sur, este).
Si queremos multiplicar todos los importes (columna A y B) y sumar aquellos que cumplan las condiciones Color=Verde y Zona=Sur, la fórmula matricial sería esta:
=SUMA((C2:C11="verde")*(D2:D11="sur")*B2:B11*A2:A11)
Bueno, si necesitas más aclaraciones no dudes en continuar la pregunta.
Respuesta
1
Sigues sin explicarte (si en la columna DE multiplicas por lo que sea, ya no son datos, sino un cálculo o resultado, no entiendo cómo sigues diciendo que son datos, ¿no te sería más fácil poner el dato, tal cual, tecleado en la columna DE y en la E el dato calculado, actualizado con su coeficiente multiplicado?) Pero bueno, no insisto, trataré de adivinar lo que quieres hacer, únicamente puedes hacerlo con macro-código y estando situado en la celda en la cual quieres el resultado final:
Sub resultado
Dim codigo As String
Dim fecha1 As Date
Dim fecha2 As Date
Dim resul As Double
Dim celda As Range
Set celda = Selection
ActiveWorkbook.Names.Add Name:="esta", RefersToR1C1:=celda
codigo = InputBox("Introduce código")
fecha1 = InputBox("introduce fecha menor")
fecha2 = InputBox("introduce fecha mayor")
Range("A2").Select
Do Until ActiveCell.Value = ""
If ActiveCell.Value = codigo And ActiveCell.Offset(0, 1).Value >= fecha1 _
And ActiveCell.Offset(0, 1).Value <= fecha2 Then
resul = resul + ActiveCell.Offset(0, 3).Value
End If
ActiveCell.Offset(1, 0).Select
Loop
celda.Value = resul
End Sub
La columna DE son IMPORTES en $, y son datos para obtener un total, pero previamente se multiplican c/u con su respectivo coeficiente (columna "C") y luego se suman: dicha suma quiero obtenerla en una celda APARTE(por ej. digamos en E22), pero no quiero sumar todos estos productos, sólo quiero aquellos que cumplen las condiciones "SI es "a" en la columna A" y "SI fecha está entre 2 fechas que yo determine". Es decir: la condición de fechas es para esa suma final. Si no soy claro disculpame.
Aclaro:
Supongo: Columna A (desde A2 a A100): códigos ("a","b" o "c").
Columna B (desde B2 a B100) van fechas.
Columna C (desde C2 a C100) van coeficientes de actualización (números).
Columna DE (D2 a D100) van importes en $.
Resultado: En el resultado, la columna DE se debe actualizar con los coeficientes de la columna C y luego sumarse de la sig forma:c2*d2+c3*d3+... c100*d100.
Resulta que sólo quiero agregar los sumandos que sean "a" en la columna A y estén dentro de un rango de fechas en la columna "B" que yo defina.
Hay algo que no te entiendo.
¿La columna DE son datos o resultados? esa suma de c2*d2+... donde va? ¿En la propia D? (Eso es redundante)
¿O es un cálculo aparte?
¿Qué es para ti "actualizar con los coeficientes de la C"? ¿Tu elección de fechas es para esa suma final o para cada D?
Explicate tío
Pusiste mucho esfuerzo y te lo agradezco. En esta ocasión tu respuesta no estuvo ajustada a mi necesidad, pero obviamente por no entendernos, no por tu falta de conocimientos. Como no hay una opción para dar una puntuación, voy a poner "bien". Hasta pronto (PD: ya evacué mi duda).
Efectivamente no existe pero puedes usar Si, anidandola puedes usar hasta 7 condiciones, si necesitas más puedes usar BUSCARV.
Con sí sería algo así como:
=SI(A1=--;SI(B1=--;A1*B1;SI(.....))
Si me dices los datos y su disposición podré decirte algo más concreto.
Si vas "recorrer" varias celdas en ese caso tendrás que hacerlo con Macro-Vba
Respuesta
Estuve mirando pero no encontré nada similar, se me ocurre que podrías hacer un producto condicional en una columna oculta (si necesitas que no se vea el cálculo intermedio) y luego sumas esas celdas en otra columna.
Si te parece adecuada la idea y no entiendes algo por favor envíame el archivo a mera(underscore)cesar(arroba)hotmail(punto)com y con gusto te colaboro. De otra manera te pido el favor de valorar la pregunta.
Cordialmente,
cmera
He visto el tema con otra gente que conoce del tema. Me dijeron que use la ayuda del excel (apretando F1)y que busque "suma condicional". Hay una fórmula que permite sumar los datos de una columna tomando como condiciones la de otras 2 columnas (El ejemplo del Excel es que sume los datos de la columna "F" cuando encuentre "NEPTUNO" en la columna "B" y "OESTE" en la "C"). Eso si, es una fórmula matricial así que va entre llaves. Perdón, pero escribo desde el trabajo y no he tenido tiempo para escribir antes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas