使用,
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'结尾的比赛。对自己的数据进行一些测试将很快证明这是否可行。它更高效,更宽容,您可以使用完整的列引用而不会受到惩罚。
我可能实际上将E62值转换为文本而不是RIGHT(...,56)转换为数字。 SUMPRODUCT很容易在无法转换为数字的文本上扼制,但实际上没有任何数字无法转换为文本。 – Jeeped
吨upvotes和喜欢你。这两个解决方案对我来说都很好。 –