在SUMPRODUCT和VLOOKUP公式中为列使用变量

时间:2017-04-03 20:09:03

标签: excel-vba variables vlookup vba excel

我试图使用这个公式:

=SUMPRODUCT(VLOOKUP(B$4778,$D$4:$DC$4623,{4,5},0))

它工作正常,但我想尝试使用变量用于公式的{4,5}部分(数组中的列要求和),因为公式需要根据工作表输入进行更改这个公式。

我在工作表上有用于设置要搜索的初始和最终列的单元格(可能是10列,但是必须从90个可用列中选择10列)。列是与人口相关的到每个年龄。所以,如果我需要10到15岁的人口,我需要总结5列。如果是20-25,需要总结5个不同的列。

我尝试使用Columns功能,但它似乎对我没用。

用户在单元格中输入搜索范围的上限和下限,然后将这些值转换为相应的数字列值。

因此,如果他们选择5为低,10为上限,我知道我必须添加7以获取数据页面上的正确数据列(第12列),同样选择上部(第17列)。

要搜索的整个可能区域为$D$4:$DC$4623。所以,在公式中,如果我把它写得很长,那就是:

=SUMPRODUCT(VLOOKUP(B$4778,$D$4:$DC$4623,{12,13,14,15,16,17},0))

我更喜欢使用变量写出来,如下所示:

=SUMPRODUCT(VLOOKUP(B$4778,$D$4:$DC$4623,{L:U},0)) 

其中变量L为12,变量U为17。

有人可以建议一种编写公式的方法吗?

1 个答案:

答案 0 :(得分:1)

使用这个数组公式:

=SUM(VLOOKUP(B$4778,$D$4:$DC$4623,ROW(INDIRECT(D5 & ":" & E5)),FALSE))

其中D5是较低的,而E5是较高的。

作为数组公式,必须在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认。如果正确完成,那么excel会将{}放在公式周围。

enter image description here

或者更好的是使用这个非数组公式:

=SUM(INDEX($D$4:$DC$4623,MATCH(B$4778,$D$4:$D$4623,0),D5):INDEX($D$4:$DC$4623,MATCH(B$4778,$D$4:$D$4623,0),E5))

enter image description here