Excel 用于查找结构化 table 和列的查找函数
Excel lookups function to find a structured table and column
我有一个包含一堆 table 的工作表。 table 是结构化的,但是标题(TABLE1、TABLE2)不是实际 table 的一部分。我正在尝试创建一个函数来查找哪个 table 对应于标题,然后查找 COLUMN3
到 return 值 SEVEN
。这是他们的样子。我正在尝试使此函数足够灵活,以便如果我将值更改为 TABLE2,它将 return 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 知识是不存在的,所以我试图只用一个超级嵌套函数来解决这个问题(尽管欢迎任何 hints/solutions)。有任何想法吗?提前致谢!
您可以使用 table 名称(如果您使用 table 对象)或具有间接函数的范围名称。考虑下面的屏幕截图。
table 被称为 TableBlue 和 TableYellow,它们是使用 Insert > Table 创建的。结构化引用可用于引用table的元素,例如TableBlue
引用蓝色table行中的所有table行,table,TableYellow[#Headers]
指向表头黄色行table.
可以将此文本插入到 Indirect() 函数中,然后该函数将指向相应的范围。 E11 中的公式将其组件与间接放在一起,并使用左侧单元格中的文本。看看当它被复制下来时,它看起来如何在不同的 table 中,甚至可以 return 来自不同列的值。
=VLOOKUP(C11,INDIRECT(B11),MATCH(D11,INDIRECT(B11&"[#Headers]"),0),FALSE)
当然,这种 Indirect() 构造可以用于其他公式,而不仅仅是 Vlookup。这取决于你想要达到什么。但请注意,Indirect 是不稳定的并且会减慢速度,尤其是在大型工作簿中。
我有一个包含一堆 table 的工作表。 table 是结构化的,但是标题(TABLE1、TABLE2)不是实际 table 的一部分。我正在尝试创建一个函数来查找哪个 table 对应于标题,然后查找 COLUMN3
到 return 值 SEVEN
。这是他们的样子。我正在尝试使此函数足够灵活,以便如果我将值更改为 TABLE2,它将 return 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 知识是不存在的,所以我试图只用一个超级嵌套函数来解决这个问题(尽管欢迎任何 hints/solutions)。有任何想法吗?提前致谢!
您可以使用 table 名称(如果您使用 table 对象)或具有间接函数的范围名称。考虑下面的屏幕截图。
table 被称为 TableBlue 和 TableYellow,它们是使用 Insert > Table 创建的。结构化引用可用于引用table的元素,例如TableBlue
引用蓝色table行中的所有table行,table,TableYellow[#Headers]
指向表头黄色行table.
可以将此文本插入到 Indirect() 函数中,然后该函数将指向相应的范围。 E11 中的公式将其组件与间接放在一起,并使用左侧单元格中的文本。看看当它被复制下来时,它看起来如何在不同的 table 中,甚至可以 return 来自不同列的值。
=VLOOKUP(C11,INDIRECT(B11),MATCH(D11,INDIRECT(B11&"[#Headers]"),0),FALSE)
当然,这种 Indirect() 构造可以用于其他公式,而不仅仅是 Vlookup。这取决于你想要达到什么。但请注意,Indirect 是不稳定的并且会减慢速度,尤其是在大型工作簿中。