使用Excel公式构建动态范围

时间:2018-01-26 09:30:00

标签: excel excel-formula

我是excel公式的新手,我正在尝试做一些我认为应该非常简单的事情。简单地说,我有一个范围$ 8 $:$ A11有数据,但我只想看看$ A $ 8:A10。但是A10可以增长。如果我在单元格A12中放置一个值,则范围必须更改为$ A $ 8:$ A11。

我有一个公式,我得到表格中最后一个单元格的行 - 1(即如果单元格A11中有数据,它会抓取它之前的行号,在本例中为10):

=(MIN(ROW(FleetNameNumbers))+ROWS(FleetNameNumbers)-1)-1

在这种情况下,它是第10行。再次,如果我在A12中放置一个值,那么此公式将更改为第11行。

在这个公式中我想动态地改变范围:

=LOOKUP(2,1/(($A8:$A11)=A11),G8:G11)

我试过这个:

=LOOKUP(2,1/(($A8:$A11-1)=A11),G8:G11)

但我得到一个#N / A值。显然这是不允许的。我读过有关OFFSET的内容,但我不知道它是否能够正常工作并做我想做的事情?

我确信这是一件很简单的事,如果有人可以提供帮助,我会非常感激。

感谢。

1 个答案:

答案 0 :(得分:0)

典型 - 发布问题后,我找到答案。感谢任何看过我的问题并试图找到解决方案的人。我发布这个可能对其他人有帮助:

我用来得到第二个最后一行的公式如下:

此公式允许我设置范围:

=INDEX($A:$A,10) // resolves to $A$10

由于我已经有一个获得第二排的公式,我将它们组合在一起:

=INDEX($A:$A,(MIN(ROW(FleetNumberRange))+ROWS(FleetNumberRange)-1)-1) // Gets the row number of the second last row.

FleetNumberRange是一个命名范围,基本上可以获得基于A8列以后数据的行数:

=OFFSET('Fleet Fuel Consumption'!$A$8,0,0,COUNTA('Fleet Fuel Consumption'!$A$8:$A$200),1)

所以我的整个公式现在看起来像这样:

=IFERROR(G11-(LOOKUP(2,1/($A$8:INDEX($A:$A,(MIN(ROW(FleetNumberRange))+ROWS(FleetNumberRange)-1)-1)=A11),$G$8:G11)),"")

不确定这是否会对任何人有所帮助,但我想我会发布我的答案。