2016-07-30 108 views
0

我想引用我的excel表格中可变范围内的一系列数据。意味着本月的数据有80行,但下个月可能有100行。所以我只想要一个方法来引用一个范围的变量范围。所以我可以在下面的公式中使用该方法: -如何引用一个变量范围

=SUMPRODUCT(Allocation_Updt!$J$2:$J$83*((RIGHT(Allocation_Updt!$F$2:$F$83,6)+0)=$E62))/100 

这里83是数据手册的最后一行。但下次可以更改。将它设置为10000(我的数据几乎是最大限制)会给我错误。

回答

1

使用,

match(1e99, Allocation_Updt!$J:$J) 

...找到一列中的最后一个数字或日期的行数。随着J83的最后一个值都以下三个区域引用的都是一样的东西

Allocation_Updt!$J$2:$J$83 
Allocation_Updt!$J$2:index(Allocation_Updt!J:J, match(1e99, Allocation_Updt!$J:$J)) 
index(Allocation_Updt!J:J, 2)):index(Allocation_Updt!J:J, match(1e99, Allocation_Updt!$J:$J)) 

所以你SUMPRODUCT function可以动态地限制到需要的正是用,

=SUMPRODUCT(Allocation_Updt!$J$2:index(Allocation_Updt!$J:$J, match(1e99, Allocation_Updt!$J:$J))*((RIGHT(Allocation_Updt!$F$2:index(Allocation_Updt!$F:$F, match(1e99, Allocation_Updt!$J:$J)),6)+0)=$E62))/100 

注意,最后一行J列中的数字用于获得F列和J列中的最后一个有效条目。

考虑到SUMPRODUCT的持续性,我可能会执行一些测试,其中

=sumifs(Allocation_Updt!$J:$J, Allocation_Updt!$F:$F, "*"&$E62)/100 

这并不是特定的'最右边的6个字符匹配';这是一个'与E62'结尾的比赛。对自己的数据进行一些测试将很快证明这是否可行。它更高效,更宽容,您可以使用完整的列引用而不会受到惩罚。

+0

我可能实际上将E62值转换为文本而不是RIGHT(...,56)转换为数字。 SUMPRODUCT很容易在无法转换为数字的文本上扼制,但实际上没有任何数字无法转换为文本。 – Jeeped

+0

吨upvotes和喜欢你。这两个解决方案对我来说都很好。 –

2

尝试将数据范围转换为表格。它会自动为每个列应用一个名称。这些列名称可用于引用列中的数据,并且该数据范围将动态前进。

+0

我很抱歉,但我无法对数据布局进行任何更改 –