Somme de produits diagonaux

Je cherche à get le sumproduct, mais seulement pour des diagonales spécifiques dans un tableau. Mon configuration est comme ci-dessous et la mise en surbrillance jaune devrait donner une idée de la façon dont la formule devrait calculer

entrez la description de l'image ici

En tant que text:

Years Rates 0 1 2 3 25 0.16 25 24 23 22 26 0.11 26 25 24 23 27 0.12 27 26 25 24 28 0.13 28 27 26 25 29 0.17 29 28 27 26 30 0.16 30 29 28 27 Years Sum of products 25 26 27 28 29 30 

Notez que le tableau sur la droite stipule combien d'années inclure, donc si le tableau a été étendu pour inclure 4 ans, alors 0.17*4 devrait être inclus dans la sum du produit pour 25

Quelle est la meilleure façon de procéder? Idéalement, pas une formule CSE / VBA. La table actuelle est beaucoup plus grande, donc je pourrais avoir besoin d'être conscient de la vitesse aussi.

J'ai l'intention de modifier cela avec ce que j'ai proposé, mais j'espère voir des façons différentes de faire cela, donc j'espère que ça va bien que je m'arrête pour l'instant.

Simplement:

=MMULT(G4:J4,B7:B10)

Cordialement

Vous pourriez essayer ce CSE, peut-être que ce n'est pas aussi mauvais (même si vous ne voulez pas un)

  =SUMPRODUCT(B7:B10,TRANSPOSE(G4:J4)) 

Je pense qu'une formule «CSE» sera le mieux même si vous préférez ne pas le faire.

Avec la première formule dans B11 et la configuration comme dans votre image, (avec 0, 1, 2, 3 dans D1: G1, le mot "Tarifs" dans B1 et le tableau dans D2: G7, etc.)

 {=SUM(IF($D$2:$G$7=A11, $D$1:$G$1*$B$2:$B$7, 0))} 

et faites glisser vers le bas

C'est la meilleure façon de find, sans utiliser de formule CSE

 =SUMPRODUCT(--($C$2:$F$7=$A11),$B$2:$B$7*$C$1:$F$1) 

Le premier tableau a nxm taille de nxm et le second groupe est le produit d'un réseau nx 1 et 1 xm , qui est converti en un réseau nxm . Cela fournit SUMPRODUCT avec deux arrays de taille identique si nécessaire.