使用Excel的INDEX函数与COLUMN和MATCH

我正在尝试使用与MATCH,COLUMN和Data Validated Cell结合的INDEX函数。

这是我写的函数,但是抛出的错误是有错的。

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

这是有效的,但并不是我想要的那样。

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

我应该指出这两件作品都不是作为条件之间的数据validation的最大值,第二件作品放置在一个单元格中。

附加信息:

ShipsData是表格的名称,B3是一个数据validation单元格,其中包含所有可能的船舶的下拉列表,表格中有两列,名称分别为Name和Max_Level。

我所要做的是validation一艘船的等级,使其在最低等级(1)和最高等级之间(包含)。

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

编辑:

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

但是,当我将这个公式传递给数据validation时,它给了我一个关于'我们发现这个公式存在问题'的消息,它不会被插入,但是现在这个函数在一个单元中工作。

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

您的问题在第一个实例是INDEX函数的列参数正在查找表中的列号; 并且您的引用将返回Max_Level列的绝对列号。 所以当且仅当表开始于列1(列A)时,这将工作。

尝试这个:

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

如果您的公式显示“您input的公式包含错误”,则可能是因为您已经移动了一些东西,Max_Level(或Name)不再是表的一部分。

你可以通过在一些空白单元格中input:

 =ShipsData[ 

并看到列标题可用显示在下拉列表中。

例如:

在这里输入图像说明

对于A1单元格的自定义数据validation,假设NameMax_Level (不包括它们的头文件)分别占用E2:E10和F2:F10的范围:

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

如果您希望保留“结构化表格参考”(当然更具dynamic性),则首先需要转到“名称pipe理器”(“ 公式”选项卡)并将“ 限制”定义为:

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

之后上述自定义数据validation变成:

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

问候