Jump to content
  • Debido a la crisis sanitaria, hasta el día 31 de marzo, el registro al foro de Ayuda Excel será totalmente gratuito para facilitar el teletrabajo. Todos los registros que se produzcan entre estas fechas tendrán acceso gratuito ilimitado a la comunidad hasta el 30 de abril.

    Regístrate

    Si te surge alguna duda mientras estás trabajando en casa con Excel, ya tienes a quien preguntar.

    Espero que esta medida te sirva de ayuda. Frenar la expansión del coronavirus depende de todos. Sé responsable.

Sign in to follow this  
ArmandoR

Application.WorksheetFunction.SUMPRODUCT

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png