INDEX(INDIRECT(“DefinedName”),1)=#REF而INDEX(DefinedName,1)有效

时间:2012-10-18 01:03:39

标签: excel excel-formula

在excel工作簿中,我引用了另一个选项卡中的已定义名称(以获取相关数据验证)。直接访问定义的名称有效,但通过INDIRECT访问它不起作用。

=INDEX(DefinedName,1)返回范围的第一个值

=INDEX(INDIRECT("DefinedName"),1)返回#REF!

我也试过

=INDEX(INDIRECT("SheetName!DefinedName"),1),但它也会返回#REF!

可以下载示例文件here

3 个答案:

答案 0 :(得分:3)

托马斯,

我以前没遇到过这个。

INDIRECT和动态范围名称似乎不兼容。这里有一个有用的参考Dicks blog

答案 1 :(得分:1)

不是一个答案,但它可能与您的命名范围返回数组而不是单元格引用(在本例中为{"VALL";"GENADMIN";"HOSP";"CELLAR"})这一事实有关。

您可以通过删除命名范围并将其替换为实际公式,然后 F9 '来复制错误:

=INDIRECT(OFFSET(Defaults!$C$1,1,0,COUNTA(Defaults!$C:$C)-1))
=INDIRECT({"VALL";"GENADMIN";"HOSP";"CELLAR"})

由于Excel期望对工作表范围进行某种引用,因此它无法在此处失败,因为它无法将数组解析为任何特定的数据(再次按F9会产生={#REF!;#REF!;#REF!;#REF!})。

INDEX公式有效,因为它可以处理数组引用:

=INDEX(OFFSET(Defaults!$C$1,1,0,COUNTA(Defaults!$C:$C)-1),1)
=INDEX({"VALL";"GENADMIN";"HOSP";"CELLAR"},1)
={"VALL"}

不是专家,但这是我最好的解决方案。

答案 2 :(得分:0)

这绝对有效。也许他们在2012年不相容,但他们确实在2018年工作。我想如果使用得当,它也会在2012年起作用。
INDIRECT函数尝试将TEXT转换为范围引用。该TEXT必须是有效的参考文献 命名范围已经是范围参考。无需从参考中获取参考。这就是OP示例在不使用INDIRECT的情况下工作的原因。 更可能的实现是,如果您从OP获得值“DefinedName”,或者单元格中的任何命名范围。然后将INDIRECT指向那个找到普通文本的单元格。然后它将该文本转换为范围引用。

您甚至可以使用INDIRECT中的公式来修改引用。一种常见的方法可能是在单元格中使用Sheet名称,然后使用INDIRECT从各种工作表中提取数据。当您想要复制和粘贴公式并使工作表(或单元格)引用动态调整为新目标时,这非常有用。

<强>设置

从一个空白工作簿开始,该工作簿应包含三个空白工作表(Sheet1,Sheet2和Sheet3)如果没有,请转到该点。然后输入以下基础知识: 第1页

单元格A1,输入“范围参考”

单元格A2,输入“SUM from Sheet”

单元格B1输入“Sheet2!A1:A4”(注意没有“=”此文本是范围参考。)

单元格C1,输入“THIRD_SHEET”(此文本相当于我们将在一秒钟内创建的命名范围。)

然后在Sheet2中,

单元格A1,输入1

单元格A2,输入2

Cell A3,输入3

单元格A4,输入4

在Sheet3中

细胞A1-A4分别进入100到400。

然后创建一个名为“THIRD_SHEET”的命名范围,它引用Sheet3上的单元格A1-A4。

<强>尝试 在Sheet1中: 单元格B2,输入公式: “= SUM(INDIRECT(B1))”

将该公式复制到单元格C2。

<强>结果:

INDIRECT使用列标题中的文本指向有效的范围引用。这只是说明。您不可能使用命名范围和文本范围的混合,并且写出“Sheet1!A1:A4”不是很干净,但您可以使用任何标准公式来获得文本参考。

<强>尝试
更改B2中的公式: “= SUM(INDIRECT(” 表 “&安培;柱()))及”!A1:A4 “))”

现在将其复制到单元格C2。

结果

嗯,是一样的。来自单元格A1:A4的SUM分别从表格2和3返回。但是,这次没有使用列标题,并且使用字符串连接“&amp;”在INDIRECT调用本身中组装范围引用。运算符和COLUMN号。

命名范围可以以相同的方式使用。重要的是要理解,INDIRECT括号内的任何内容都需要首先解析为vaild TEXT范围引用。

我希望有所帮助!