Excel 使用MATCH构建单元格范围返回#值
我有一个公式,它使用一个设置单元格范围的大函数查找10个最高值。SALESNew是52周的数字,第k个最大值是销售总额$CExcel 使用MATCH构建单元格范围返回#值,excel,match,Excel,Match,我有一个公式,它使用一个设置单元格范围的大函数查找10个最高值。SALESNew是52周的数字,第k个最大值是销售总额$C =LARGE('2015SALESNew'!$D$250:$BC$250,'SALES Summ'!$C6) 我需要扩展它,根据产品范围动态选择SALESNew上的行。我尝试过各种方法来构建单元格范围,所有这些方法在单独使用时都会返回正确的结果,但是如果在大公式中使用#值,则会返回该值 举例如下: =LARGE(("'2015SALESNew'!$D$"&G43&
=LARGE('2015SALESNew'!$D$250:$BC$250,'SALES Summ'!$C6)
我需要扩展它,根据产品范围动态选择SALESNew上的行。我尝试过各种方法来构建单元格范围,所有这些方法在单独使用时都会返回正确的结果,但是如果在大公式中使用#值,则会返回该值
举例如下:
=LARGE(("'2015SALESNew'!$D$"&G43&":$BC$"&G43),'SALES Summ'!$C43)
$G43 contains =MATCH($A38,'2015SALESNew'!A:A,0)
下面我尝试的3种方法都返回了正确的范围
('2015SALESNew'!$D$255:$BC$255) but the formula result is always #VALUE.
="'2015SALESNew'!$D$"&G43&":$BC$"&G43
="'2015SALESNew'!$D$"&MATCH($A38,'2015SALESNew'!A:A,0)&":$BC$"&MATCH($A38,'2015SALESNew'!A:A,0)
=CONCATENATE("'2015SALESNew'!$D$",MATCH($A38,'2015SALESNew'!A:A,0),":$BC$",MATCH($A38,'2015SALESNew'!A:A,0))
没有正确读取单元格区域,我缺少了什么?我发现构建动态范围引用的最佳方法是使用
索引功能。正如帮助文件所说,-Index(reference form)返回特定行和列相交处单元格的引用。
因此,例如,=INDEX($J:$J,5)
将在$J:$J-即$J$5范围内的第5行的交点处返回一个引用。
在此公式中添加另一个索引,例如$N:$N范围内的第10行的交点,您将引用一个单元格范围:=INDEX($J:$J,5):INDEX($N:$N,10)
运行这个计算公式,它将显示$J$5:$N$10的范围-将其包装在一个求和函数中,并将该范围内的所有值相加
现在让它成为动态的-公式COUNTA($N:$N)
将计算N列中所有非空的单元格。如果第N列中没有空格,这将有效地为您提供第N列中包含数据的最后一行。
现在我们可以重写公式,读取=$J$5:INDEX($N:$N,COUNTA($N:$N))
。
我已经将J5更改为一个常量(如果它不会更改的话,也可以更改),并且第二次引用包含第N列中数据的最后一个单元格(前提是第N列中没有空格)。现在,在我的示例中,它引用了J5:N10。
将其包装在一个大函数=LARGE($J$5:INDEX($N:$N,COUNTA($N:$N)),3)
中,它将显示我的范围内的第三大数字
编辑:作为额外的奖励,索引函数是非易失性的,而类似的偏移函数和间接函数是易失性的-无论何时计算,都会造成开销。
Volatile函数是导致重新计算中公式的函数
每次Excel重新计算时它所在的单元格。这种情况发生了
无论之前的数据和公式
公式取决于是否已更改,或者公式是否还包含
非易失性函数
首先,你能把你的公式格式化为代码吗?这样更容易阅读。在它们前面加上4个空格。第二,为什么公式中有双引号(“)?我认为您应该删除这些引用,因为您现在指出一些引用是文本引用,而不是引用。@Luuklag-我需要使用双引号来构建单元格范围。我还通过查看我过去使用的其他公式来回答了我自己的问题-将公式包装为间接引用解决了问题。