如何定义Excel范围的可变位置和长度?

时间:2019-02-21 10:41:12

标签: excel excel-formula

[图像] [1]

我正在努力定义一个可变位置,可变长度范围。我想应用以下SUMPRODUCT逻辑。

=SUMPRODUCT((C:C="EUR")*(F:F<10)*E:E/$H$3*F:F)

但是,我只想用D列中“标题2”和“标题3”之间的行替换整个列范围。因此C:C将替换为C10:C11; F:F将由F10:F11等代替。“标题2”和“标题3”的位置都可以更改(因此范围的位置和长度是动态的),因此范围不能进行硬编码。     如何更改公式以仅将SUMPRODUCT逻辑应用于这些标题之间的行?

我希望这是有道理的,感谢您的帮助!

编辑:如果有人在寻找相同的东西,我设法使用以下公式获得正确的输出:

=SUMPRODUCT((INDEX(C:C, MATCH("Heading 2",D:D,0)):INDEX(C:C, MATCH("Heading 3",D:D,0))="EUR")*(INDEX(F:F, MATCH("Heading 2",D:D,0)):INDEX(F:F, MATCH("Heading 3",D:D,0))<10)*INDEX(E:E, MATCH("Heading 2",D:D,0)):INDEX(E:E, MATCH("Heading 3",D:D,0))/$H$3*INDEX(F:F, MATCH("Heading 2",D:D,0)):INDEX(F:F, MATCH("Heading 3",D:D,0)))

1 个答案:

答案 0 :(得分:0)

有两种简单的方法可以确定列中的“最后一行”,但是您需要知道要查找的内容。

'last row with a number or date in a column
=match(1e99, F:F)
'last row with text in a column
=match("zzz", C:C)

在您要限制范围的公式(例如SUMPRODUCT)中,选择其中之一并将定义行用于所有动态范围。我假设您在第1行中具有标题列标签,并且您的数据从第2行开始。

从第2行到C列中的C列中与最后一行相接且F列中有数字的所有列。

C2:INDEX(C:C, MATCH(1e99, F:F))

F列是条件之一,也是结果总和的一个因素,因此除F列最后一个数字之外的任何行都对任何列均无效。将包含F列最后一个数字的行用作所有列的最后一行。这样可以确保计算所有有效数据,并确保所有范围都具有相同的“大小”(即,相同的行数)。由于范围不成比例,对C列使用一种方法,对F列使用另一种方法可能会使该公式无效。

=SUMPRODUCT((C2:INDEX(C:C, MATCH(1e99, F:F))="EUR")*(F2:INDEX(F:F, MATCH(1e99, F:F))<10)*E2:INDEX(E:E, MATCH(1e99, F:F))/$H$3*F2:INDEX(F:F, MATCH(1e99, F:F)))

现在公式真正具有动态性。在F列中的新行输入新数字后,所有其他范围都会相应地扩展。