根据下拉单元格内容

时间:2016-04-28 04:24:27

标签: arrays excel excel-vba vba

我是新来的 - 我会尝试简洁(我认为我的搜索相当彻底)。使用MS Excel 2016,我有以下数组公式:

{= INDEX(ACD [ DrugA ],MATCH(A5& B5,ACD [细胞系]& ACD [激酶],0))}

" ACD"是同一工作簿中单独工作表中的命名表,它包含50列数据,每列大约500行。每列都是不同的药物"。

我有一个下拉列表,用于填充公式运行的工作表的单元格C1(让我们调用此工作表"查询表")。下拉列表中有50多种不同的" Drug"文字条目 - 除了" DrugA " - 从中​​选择(DrugB,DrugC等)。

我想从此下拉列表中选择一个条目,然后将该条目替换为" DrugA "在公式中,从而将公式重定向到我的" ACD"中的不同列值。表。因此,我认为必须有一个命令,我可以嵌入公式中,指示它取代" DrugA "使用从单元格C1中选择的条目。

我已经参与了两天无数谷歌搜索,目前还没有解决方案。看起来它应该很简单,但我尝试的所有简单的事情都会返回错误......这么多返回的错误。我有一些基本的vba技能我可以承担,但它似乎不应该是必要的。当然,只需更换" DrugA "所有排列的" C1"不起作用。我已经探索了许多命令选项,例如INDIRECT,REPLACE,SUBSTITUTE,但似乎LOSER是我重定向的地方。

任何能够保持理智的解决方案都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

您可以使用OFFSET来确定列。

考虑这张表。

enter image description here

首先,您的公式的无数组版本:

=INDEX(ACD[ccc],MATCH(A5&B5,INDEX(ACD[Cell Line]&ACD[Kinase],0)),0)

了解我的第一栏是药物aaa。为了找到执行索引的列,OFFSET可以像这样使用:

OFFSET(ACD[aaa],0,MATCH(C1,ACD[#Headers],0)-1)

单词:在ACD表标题中找到C1中名称的列号,从该数字中减去1,并将该列数移到ACD [aaa]列的右侧。

整合到初始公式中:

=INDEX(OFFSET(ACD[aaa],0,MATCH(C1,ACD[#Headers],0)-1),MATCH(A5&B5,INDEX(ACD[Cell Line]&ACD[Kinase],0),0))

enter image description here

答案 1 :(得分:0)

谢谢你teylyn - 这样的快速反应比我希望的更多(但是对于编辑时间守护者而言,下面的内容太慢了)。

我需要仔细探索您的答案,以便更好地了解您提出的解决方案 - 这肯定会有助于扩展我的微薄技能。事实证明,我不知何故偶然发现了解决方案 - 尽管我不确定它为什么会起作用。

以下是现在有效的修订版:

{=INDEX(INDIRECT("ACD["&$C$1&"]"),MATCH(A5&B5,ACD[Cell Line]&ACD[Kinase],0))}. 

似乎语法就是一切,&是关键以及锁定单元格C1。这就是我去解决这个问题的地方:http://www.excel-bytes.com/how-to-use-index-and-match-in-a-table-with-indirect-in-excel/