Excel 2013:在If语句的子句中使用间接作为数据验证列表

时间:2016-10-12 15:34:58

标签: excel vba

我正在尝试根据路由器1的型号(B列)和路由器2的型号(C列)创建一个包含可用路由器接口(E列)的数据验证下拉列表。 / p>

我使用以下方法为router1编制了一个接口列表(D列):

=INDIRECT("TBL_Device_Interfaces[" & INDIRECT("B" & ROW()) & "]")

这是我遇到问题的地方。对于Col E,我需要对表格列表执行相同的间接,但是,如果当前行的COL C ="未使用"然后使用COL B的值,否则使用COL C的值。

我首先尝试了这个,但它不起作用:

=INDIRECT("TBL_Device_Interfaces[" & INDIRECT(IF(INDIRECT("C" & ROW()) = "not used", "B", "C") * ROW()) & "]")

然后我尝试了,但它不起作用:

=If(INDIRECT("C" & ROW()) = "not used", INDIRECT("TBL_Device_Interfaces[" & INDIRECT("B" & ROW()) & "]"), INDIRECT("TBL_Device_Interfaces[" & INDIRECT("C" & ROW()) & "]"))

但这就是杀了我的原因。因为这可行...但我需要静态列,但是基于当前行的动态行:

=If($C$6 = "not used", INDIRECT("TBL_Device_Interfaces[" & INDIRECT("B" & ROW()) & "]"), INDIRECT("TBL_Device_Interfaces[" & INDIRECT("C" & ROW()) & "]"))

注意:我手动关闭离线电脑。对不起,如果有任何类型操作系统(如拼写间接错误)。那些不在主码中。如果所有人都在分段工作,但我无法让它在数据验证中工作。

我还有另外一种创建下拉列表的方法。我只需要能够使用index / match和indirects引用值表。

1 个答案:

答案 0 :(得分:0)

您正在混合使用不同的单元格引用样式。如果你考虑你的公式将如何执行它的说法"去看看TBL_Device_Interfaces [B3]"。您可以看到如何构建structured table references here.您需要坚持使用结构化表引用或切换回标准引用。

尝试将您的公式设为:

=IF($C$6 = "not used", INDIRECT( INDIRECT("B" & ROW()) ), INDIRECT(INDIRECT("C" & ROW()) ))

或者如果你想坚持使用结构化参考,请尝试:

=IF(TBL_Device_Interfaces[@Column3] = "not used", TBL_Device_Interfaces[@Column2], TBL_Device_Interfaces[@Column1])

我的列可能不对,但它应该有效。