![是否可以使用标准 Excel 公式确定不同工作表中某个范围的开始和结束位置?](https://linux22.com/image/1621226/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E6%A0%87%E5%87%86%20Excel%20%E5%85%AC%E5%BC%8F%E7%A1%AE%E5%AE%9A%E4%B8%8D%E5%90%8C%E5%B7%A5%E4%BD%9C%E8%A1%A8%E4%B8%AD%E6%9F%90%E4%B8%AA%E8%8C%83%E5%9B%B4%E7%9A%84%E5%BC%80%E5%A7%8B%E5%92%8C%E7%BB%93%E6%9D%9F%E4%BD%8D%E7%BD%AE%EF%BC%9F.png)
我有一本包含两张工作表的工作簿。
工作表 #1 包含我需要在工作表 #2 中进行计算的一系列值。
范围从 A1 到 A10。
是否可以使用一个公式来识别这些起始值和终止值,而无需我明确地对其进行硬编码?此外,我希望 Excel 在找到范围后为其命名,以便我可以使用该名称作为后续 SUMPRODUCT() 函数的输入参数。
我试图避免使用 VBA,但不确定我所尝试做的事情是否可以通过现成的公式实现。
答案1
通过创建命名范围并使用以下公式,可以很容易地获得具有已知起点的动态范围:
=$A$1:INDEX($A:$A,COUNTA($A:$A))
然而,如果 A1 要改变,它就变成:
=INDIRECT("A"&MATCH(INDEX(Sheet1!$A:$A,MATCH(TRUE,INDEX((Sheet1!$A:$A<>0),0),0)),Sheet1!$A:$A,FALSE)&":A"& COUNTA(Sheet1!$A:$A)+MATCH(INDEX(Sheet1!$A:$A,MATCH(TRUE,INDEX((Sheet1!$A:$A<>0),0),0)),Sheet1!$A:$A,FALSE)-1)
再次作为命名范围。
请注意,仅当 A 列中没有除感兴趣的数据之外的其他数据时,这才会起作用。