0

我有一张带有一堆表格的工作表。这些表是结构化的,但是标题(TABLE1、TABLE2)不是实际表的一部分。我正在尝试创建一个函数来查找与 Title 对应的表,然后查找COLUMN3以返回 value SEVEN。这是他们的样子。我试图使这个函数足够灵活,这样如果我将值更改为 TABLE2,它将返回GG.

TABLE1 +---------+---------+---------+----------+ | column1 | column2 | COLUMN3 | column4 | +---------+---------+---------+----------+ | row1 | xxx | xxx | xxx | | row2 | xxx | SEVEN | xxx | | row3 | xxx | xxx | xxx | | row4 | xxx | xxx | xxx | +---------+---------+---------+----------+

TABLE2 +---------+---------+---------+----------+ | column1 | column2 | COLUMN3 | column4 | +---------+---------+---------+----------+ | row1 | bb | cc | dd | | row2 | ff | GG | hh | | row3 | zzz | zzz | zzz | | row4 | zzz | zzz | zzz | +---------+---------+---------+----------+

我不知道从哪里开始。我的 VBA 知识不存在,所以我试图只用一个超级嵌套函数来解决这个问题(尽管欢迎任何提示/解决方案)。有任何想法吗?提前致谢!

4

1 回答 1

0

您可以使用表名称(如果您使用表对象)或范围名称与间接函数。考虑下面的屏幕截图。

这些表称为 TableBlue 和 TableYellow,并已使用 Insert > Table 创建。结构化引用可用于引用表格的元素,例如TableBlue引用蓝色表​​格中的所有表格行,TableYellow[#Headers]指向黄色表格的标题行。

该文本可以插入到 Indirect() 函数中,然后该函数将指向相应的范围。E11 中的公式将其组件与 Indirect 放在一起,并使用左侧单元格中的文本。看看当它被复制下来时,它如何在不同的表中查找,甚至可以从不同的列返回值。

=VLOOKUP(C11,INDIRECT(B11),MATCH(D11,INDIRECT(B11&"[#Headers]"),0),FALSE)

这种 Indirect() 构造可以用于其他公式,当然不仅仅是 Vlookup。这取决于您想要达到的目标。但是请注意,间接是易变的,并且会减慢速度,尤其是在大型工作簿中。

在此处输入图像描述

于 2017-06-28T03:17:31.563 回答