Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用MATCH构建单元格范围返回#值_Excel_Match - Fatal编程技术网

Excel 使用MATCH构建单元格范围返回#值

Excel 使用MATCH构建单元格范围返回#值,excel,match,Excel,Match,我有一个公式,它使用一个设置单元格范围的大函数查找10个最高值。SALESNew是52周的数字,第k个最大值是销售总额$C =LARGE('2015SALESNew'!$D$250:$BC$250,'SALES Summ'!$C6) 我需要扩展它,根据产品范围动态选择SALESNew上的行。我尝试过各种方法来构建单元格范围,所有这些方法在单独使用时都会返回正确的结果,但是如果在大公式中使用#值,则会返回该值 举例如下: =LARGE(("'2015SALESNew'!$D$"&G43&

我有一个公式,它使用一个设置单元格范围的大函数查找10个最高值。SALESNew是52周的数字,第k个最大值是销售总额$C

=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-我需要使用双引号来构建单元格范围。我还通过查看我过去使用的其他公式来回答了我自己的问题-将公式包装为间接引用解决了问题。