2017-04-03 209 views
1

我试图用这个公式:使用在SUMPRODUCT和VLOOKUP公式列变量

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

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

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

我试图使用列功能,但它似乎并没有为我工作。

用户通过在单元格中输入搜索范围的上限和下限来选择列,然后将这些值转换为相应的数字列值。因此,如果他们选择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

使用这种阵列式:

=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

+0

辉煌!他们在英国的工作就像一种享受!你为我节省了一大堆时间和挫折。我将使用n0n数组公式。谢谢! – Bob22