excel函数中的Last Row基于单元格中的值而不使用vb​​a而更改

时间:2012-08-02 10:00:58

标签: excel excel-formula

我在excel中有以下功能:

=SUMIF($H$2:$H$500;CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);$C$2:$C$500)

在这个例子中它位于第N行第2行。我有一个宏将该函数拉到列中。

在此功能中,它考虑从细胞H2到H500的所有内容

  

$ H $ 2:$ H $ 500

和C2到C500

  

$ C $ 2:$ C $ 500

C500& H500 = LastRow,我手动输入了这个数字,但是当条目数量超过这个数字时,它们不会被计算,结果不正确。

我有一个包含数字1的单元格R2,它将根据我从另一个文件中找到的LastRow进行更改。这将自动更新。

我希望数字500(现在是我输入的静态数字)根据单元格R2中的数字(值)进行更改。使其更加灵活。

如果单元格R2中的值从1更改为300,则此示例中的数字500需要从单元格R2更改为此300。 我知道当对此函数进行更改时,它不会是500而是1,因为单元格R2中的数字是1而不是500.

这将是:

=SUMIF($H$2:$H$**R2**;CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);$C$2:$C$**R2**)

当我在函数中选择$ 500时,我尝试选择单元格R2,但它会将H2和R2之间的范围视为选择,但这不是我想要的。

我希望它只能看到H列,只是或多或少的行,由R2中的值定义。

我希望有人能解决这个问题。

我提前感谢。

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用INDIRECT()来构建地址。

=SUMIF(INDIRECT("$H$2:$H$" & TEXT($R$2, "#####"));CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);INDIRECT("$H$2:$H$" & TEXT($R$2, "#####"))

答案 1 :(得分:0)

您可以使用OFFSET功能为您提供所需内容。 OFFSET根据您选择的参数返回范围。在这种情况下,您可以根据您的单元格OFFSETR2提供要返回的行数。

微软有一个很好的例子here所以我不会在这里重复。

然后你的公式变成:

=SUMIF(OFFSET(Sheet1!$H$2;0;0;Sheet1!$R$2-1;1);CONCATENATE(N$1;$K$1;$K2;$M$1;$M2);OFFSET(Sheet1!$C$2;0;0;Sheet1!$R$2-1;1))

请记住,您仍然分别将行的开头硬编码为H2和C2,因此如果这些移动,您将需要确保调整(即-1部分Sheet1!$R$2-1 1}})对你的情况是正确的。