计算在excel范围内使用的值

我正在尝试创build一个excel模板,以便当用户将数据复制到“帐户configuration文件”选项卡中时,将计算其中包含内容的最后一行,并将此值用于其他工作表上的公式。 这个公式用数据计算最后一行:

=LOOKUP(2,1/('Account Data'!A:A<>""),ROW('Account Data'!A:A)) 

这工作正常,麻烦来了,当我尝试使用结果作为范围参考:我想我的公式从第2行 – >行(LOOKUP的值)

 =COUNTIF('Account Data'!$N$2:$N$991,A8) 

我想用“LOOKUP”公式的结果代替“991”,使范围总是正确的。 我确信有一个简单的方法,但我已经尝试了一段时间,无法弄清楚应该是什么语法。

斯科特是正确的,你应该直接使用COUNTIF与列参考。 但是,如果这是一个人为的例子或者什么的,那么这就是你如何描述的方式:

 =COUNTIF(INDIRECT("'Account Data'!$N$2:$N$" & LOOKUP(2,1/('Account Data'!A:A<>""), ROW('Account Data'!A:A))), A8) 

需要注意的重要部分是INDIRECT("'Account Data'!$N$2:$N$" & LAST_ROW_NUMBER)INDIRECT函数是如何获取一串文本并将其解释为单元格引用。 "Some text" & VARIABLE_NAME是你如何从variables中build立这样一个文本string:你使用&符号连接它们。

COUNTIF不是数组公式,因此您可以使用完整的列引用而不会造成损害。

 =COUNTIF('Account Data'!$N:$N,A8) 

但是如果你真的想要一个dynamic范围然后使用INDEX / MATCH:

 =COUNTIF('Account Data'!N2:INDEX('Account Data'!N:N,MATCH(1E+99,'Account Data'!A:A)),A8) 

这将find列A中具有数字的最后一个单元格。 如果列A填充了文本,则用"ZZZ"replace1E+99

如果你想使用LOOKUP,那么:

 =COUNTIF('Account Data'!N2:INDEX('Account Data'!N:N,LOOKUP(2,1/('Account Data'!A:A<>""),ROW('Account Data'!A:A))),A8)