使用Excel的INDEX函数与COLUMN和MATCH

时间:2015-08-12 12:25:24

标签: excel excel-formula

我正在尝试将INDEX函数与MATCH,COLUMN和数据验证单元结合使用。

这是我编写的函数,但它会抛出错误信息。

=INDEX(ShipsData,MATCH(B3,ShipsData[Name],0),COLUMN(ShipsData[Max_Level]))

这样可行,但它不是我想要的未来证据。

=INDEX(ShipsData,MATCH(B3,ShipsData[Name],0),13)

我应该指出这些都不是条件之间的数据验证的最大值,第二个在放置在单元格中时起作用。

其他信息:

ShipsData是表的名称,B3是一个数据验证单元格,下拉所有可能的船只,表格中有两列名为Name和Max_Level。

我要做的是验证船的水平,使其处于(包括)它的最低水平(1)和每艘船的最大水位之间。

如果您需要更多信息,我可以提供。

编辑:

我解决了部分问题,公式现在在一个单元格中完成,表格标题Max_Level中有一个拼写错误。

然而,当我将此公式传递给数据验证时,它会给我一条关于“我们发现此公式存在问题”并且不会插入的消息,但该功能现在可以在单元格中使用。

2 个答案:

答案 0 :(得分:1)

在我的系统上,您的公式显示#REF错误。

你的第一个问题是INDEX函数的Column参数正在查找表中的列号;并且您的引用返回Max_Level列的绝对列号。因此,当且仅当表格从第1列(A列)开始时,这将起作用。

试试这个:

=INDEX(ShipsData,MATCH(B3,ShipsData[Name],0),COLUMN(ShipsData[Max_Level])-COLUMN(ShipsData)+1)

如果您的公式显示“您键入的公式包含错误”,那么您可能已经移动了某些东西,使得Max_Level(或Name)不再是表的一部分。

您可以在一些空白单元格中输入以下内容进行检查:

=ShipsData[

并查看下拉列表中显示的列标题。

e.g:

enter image description here

答案 1 :(得分:0)

单元格A1的自定义数据验证,假设名称 Max_Level (不包括其标题)分别占用范围E2:E10和F2:F10:

=AND(A1>=1,A1<=INDEX($F$2:$F$10,MATCH($B$3,$E$2:$E$10,0)))

如果您希望继续使用结构化表引用,这当然是更动态的,那么您首先需要转到名称管理器(公式选项卡)并定义限制 as:

=INDEX(ShipsData[Max_Level],MATCH(Sheet5!$B$3,ShipsData[Name],0))

之后,上述自定义数据验证变为:

=AND(A1>=1,A1<=Limit)

此致