计算在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)