Saltar al contenido

Application.WorksheetFunction.SUMPRODUCT


Recommended Posts

publicado

Estimados compañeros,

a ver si me podéis hechar una mano con esta duda que tengo.

Os adjunto dos ficheros, el primero (Calculo) calcula en una celda mediante sumaproducto el dato de otro fichero excel (BD). Hasta ahí no tengo problemas y la macro es fácil de crear:

 

Sub CALCULO()

ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT((BD.xlsb!R2C1:R2321C1=RC[-2])*(BD.xlsb!R2C4:R2321C4=RC[-1]),BD.xlsb!R2C6:R2321C6)"
ActiveCell = ActiveCell.Value

End Sub


El tema es que lo que necesito es que ese cálculo sea mediante el siguiente código (como una variable ya que a veces me interesará traerme el dato y otras no)

Sub CALCULO()

Dim avl As Variant
Av1 = Application.WorksheetFunction.SUMPRODUCT((BD.xlsb!R2C1:R2321C1=RC[-2])*(BD.xlsb!R2C4:R2321C4=RC[-1]),BD.xlsb!R2C6:R2321C6)

End Sub

No logro dar con la programación adecuada

 

Muchas gracias por vuestra ayuda

BD.xlsb Calculo.xlsb

publicado

Saludos @ArmandoR, te dejo estas dos macros, espero te sean de utilidad

Sub mostrar()

    MsgBox Resultado("Crevillente", "FRUTAS")

End Sub

Function Resultado(ByVal sTienda As String, ByVal sGrupoD As String) As Double
    Dim vValor As Variant
   
    Resultado = 0
    
    vValor = Application.Evaluate( _
        "=SUMPRODUCT(([BD.xlsb]BD!A2:A2321=" & Chr(34) & sTienda & Chr(34) & ")*([BD.xlsb]BD!D2:D2321=" & Chr(34) & sGrupoD & Chr(34) & "),[BD.xlsb]BD!F2:F2321)")
    
    If IsError(vValor) = False Then
        Resultado = CDbl(vValor)
    End If
   
End Function

suerte

publicado

Muchas gracias bigpetroman , la verdad es que funciona a la perfección.

Una duda, en caso de que quisiese  que me apareciese el dato en una celda en concreto en vez de en un msgbox?

 

Gracias de nuevo

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.