如何在excel中使用SUMPRODUCT的数组输入中的(间接)引用

时间:2015-01-20 17:41:21

标签: arrays excel

我有两张excel的表格,我想采取sumproduct。

表1:

  |  A   |  B   |  C   |  D   |  E   |  F   |  G   |  H   |  I   |  J   |  
=========================================================================
1 | 1    |      |      |      |      | 2    |      |      |      |      |       
2 | ABC  | BAC  | CDE  | DSW  | FSA  | ABC  | BAC  | CDE  | DSW  | FSA  |
3 | 3    | 2    | 4    | 1    | 3    | 2    | 5    | 2    | 4    | 3    |
...
n | f(1) |      |      |      |      | f(2) |      |      |      |      |

表2:

   |  X  |  Y  |
================
10 | ABC | 10  |
11 | BAC | 15  |
12 | CDE | 12  |
13 | DSW | 8   |
14 | FSA | 17  |

表1是具有ABC等重复列的输入表,其中索引为第1行中当前部分的编号。表2是具有适用于ABC等下面的值的“费率”的参考。

在第n行中,我想应用一个只采用当前部分的sumproduct的通用公式,即A-E或F-J列。我有一个if语句,确保只在A和F列中适用以下公式:

=SUMPRODUCT(A3:ADDRESS(ROW(A3);MATCH(A$1+1;$1:$1;0)-1);Y10:Y14)

SUMPRODUCT收到产品的两个数组。第一个由已知的参考A3组成,并且应该延伸到同一部分和行中的最后一个字段(E3)。这是我无法工作的部分。

诀窍是最后可能会遗漏一些列。因此,完全相同的公式也适用于表1的下面(备选)案例。

  |  A   |  B   |  C   |  D   |  E   |  F   |  G   |  H   | 
===========================================================
1 | 1    |      |      | 2    |      |      |      |      |     
2 | ABC  | BAC  | CDE  | ABC  | BAC  | CDE  | DSW  | FSA  |
3 | 3    | 2    | 4    | 2    | 5    | 2    | 4    | 3    |
...
n | f(1) |      |      | f(2) |      |      |      |      |

到目前为止的结果是我使用ADDRESS作为阵列的输入收到错误。

我确实尝试了INDIRECT,但到目前为止没有成功。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用INDEX/MATCH来获取正确的范围.....但如果它可能不是5个单元格,您将无法将其乘以Y10:Y14,所以也许试试这个版本:

=SUMPRODUCT(SUMIF(X10:X14;A2:INDEX(2:2;MATCH(A$1+1;$1:$1;0)-1);Y10:Y14);A3:INDEX(3:3;MATCH(A$1+1;$1:$1;0)-1))