0

我在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

2 加元: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 中的值定义的。

我希望有人对此有解决方案。

提前致谢。

4

2 回答 2

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, "#####"))
于 2012-08-02T10:29:01.283 回答
0

您可以使用该OFFSET功能来满足您的需求。OFFSET根据您选择的参数返回一个范围。在这种情况下,您可以OFFSET根据您的单元格提供要返回的行数R2

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

然后你的公式变成:

=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在 part 中Sheet1!$R$2-1)对于您的情况是正确的。

于 2012-08-02T10:27:31.977 回答