用INDEX公式定义一个子范围的问题
我的理解是,你可以使用索引来定义一个范围。 例如我可以设置MyList的定义名称
=index(A:A,3,1):index(A:A,5,1)
这将相当于说A3:A5。 然后我可以转身使用索引(MyList,1,1),我会看到A3的内容。 所有这一切对我有用。
所以我试图定义一个表名的范围。 我使用定义的名称sheetnames:
=TRANSPOSE(GET.WORKBOOK(1,Structural!$J$3)&T(NOW()))
(我用转置来获取列表垂直)
当我使用:
=INDEX(Sheetnames,3,1) =INDEX(Sheetnames,6,1)
我在工作簿中分别得到我的第3张或第6张的名字。 这部分工作。 但是,当我尝试定义一个范围像我为MyList使用以下我得到#value
=INDEX(INDEX(Sheetnames,3,1):INDEX(Sheetnames,6,1),1,1)
题:
为什么它不工作?
作为获得第一个sheetname的testing,我也尝试过:
=OFFSET(Sheetnames,1,1,1,1)
这也给了同样的错误。
我最终要做的是通过除名为“索引”和“主”的表格之外的所有表格名称的数据validation生成一个下拉列表。
根据Excel的INDEX帮助文件…
参考表格
描述
返回特定行和列相交处单元格的引用。 如果引用由不相邻的select组成,则可以select要查找的select。
句法
INDEX(引用,row_num,[column_num],[area_num])
INDEX函数语法具有以下参数。
需要参考。 对一个或多个单元格区域的引用
等等…
因此,为了返回一个引用,你需要引用一系列的单元格。 然而, SheetNames
不涉及一系列单元格。 它指的是GET.WORKBOOK
,它返回一个值的数组。 在这种情况下,它返回一个表格名称数组。
所以用下面的公式…
=INDEX(INDEX(Sheetnames,3,1):INDEX(Sheetnames,6,1),1,1)
…它被评估如下(假设工作簿被称为Book1.xlsx,你有Sheet1,Sheet2,Sheet3等)…
--> some preliminary evaluations <--- =INDEX("[Book1.xlsx]Sheet3":"[Book1.xlsx]Sheet6",1,1) =INDEX(#VALUE!,1,1) =#VALUE!
您可以通过select包含公式的单元格,然后使用function区上的“ Evaluate Formula
button(“公式”选项卡>“公式审计”组),逐步对公式Evaluate Formula
。
在这种情况下,您也可以使用ISREF
函数确认INDEX
不返回引用。 下面的公式应该返回FALSE
…
=ISREF(INDEX(Sheetnames,3,1))
希望这可以帮助!