我有一个单元格范围,我在Excel中命名为“cell_range”。我想从这个表中提取第四行和第五列。公式,
= VLOOKUP(4,CELL_RANGE,5)
给了我正在寻找的价值。
但是,我在单元格A1中也有文本“cell_range”。我没有在公式中输入“cell_range”,而是想通过引用单元格A1间接引用“cell_range”。公式
VLOOKUP(4,A1,5)
给我一个“#N / A”错误。
如何在公式中间接引用表“cell_range”?
使用INDIRECT:
=VLOOKUP(4,INDIRECT(A1),5)
虽然你可以使用INDIRECT来执行这种东西,但我已经避开了它,原因是我在https://chandoo.org/wp/2014/03/03/handle-volatile-functions-like-they-are-dynamite/上概述了
在这种特殊情况下,我会使用查找表和CHOOSE或INDEX,如下面的屏幕截图所示:
请注意,您需要使用我的方法预先指定您的区域。
这是CHOOSE的语法
=选择(index_num,值1,值2,...)
这是微软的翻译 - 说到Jeff-speak:
= CHOOSE(你想要哪个区域?,第一区域,第二区域......)
如果使用下拉列表或单元格引用来提供index_num参数,则只需使用查找表将下拉列表或单元格输入的输出转换为索引号,该索引号告诉CHOOSE应使用列表中的哪个范围。
在此示例中,您将使用此方法选择电子表格中的哪个区域进行求和。但是CHOOSE和INDEX可以用来做更多的事情。例如,您可以使用它们来允许用户动态选择在执行VLOOKUP时使用的查找表。或者,您可以让用户动态选择用户进行某些计算的工作表范围。确实非常强大的东西!
这是使用INDIRECT的绝佳选择。间接直观易用,但我同意用户应该清楚它。对于包含许多工作表的工作簿,我建议使用宏来列出所有工作簿,而不是手动创建工作表列表。见https://www.automateexcel.com/vba/list-all-sheets-in-workbook/