这是我第一次在这里发帖,所以如果我遗漏了任何重要信息,我提前表示抱歉。请告诉我!
我有一张包含类似以下数据的表格:https://ibb.co/Jx631Bq
我希望右边的两列(L 和 M)包含表中与右侧单元格具有相同列名的列的数字(在本例中为 G 列和 J 列)。
我想要的公式应该是这样的:=Table[@$L$1] 但显然它不起作用。
我不想使用直接单元格引用来做到这一点,因为我的实际工作簿比这个例子复杂得多,我想创建一个可以放入其他单元格的公式,它总是在表中查找与列标题匹配的数据。
如果我需要添加任何内容,请告诉我!提前致谢!
答案1
对于表格,您可以使用结构化引用通过列名访问列的数据区域。然后可以使用该INDEX
函数选择该列中的一行。
以下是一个例子:
要访问表中某一列的数据区域,我们使用结构化引用格式TableName[[#Data],[ColumnName]]
,其中#Data
指示 excel 我们只想要数据主体而不是标题行或总计行。
INDIRECT
要使用单元格引用来选择列的名称,可以使用这个问题具体来说,使用文本连接将包含列名的单元格中的文本合并到公式中,然后间接将该字符串转换为表引用:
例如,INDIRECT("Table1[[#Data],["&D7&"]]")
在这种情况下D7
包含列名。
结构化访问的结果是一个单元格数组,表格列中的每个单元格对应一个单元格。您可以使用INDEX(array, row)
该数组选择特定的单元格。
请注意,行号不是全局 Excel 行号,而是数据区域内的行号 - 因此在此示例中,第 1 行将是“Hello”。
答案2
我的方法是使用 MATCH 将您的文本字符串与所有标题进行比较以找到列号。将其放入 INDEX 中以返回整个列。您可以使用它来执行诸如对整个列求和之类的操作,或者在其他公式中使用该列。
如果您已经执行了 MATCH 来查找特定行,则只需在同一个 INDEX 中使用两个匹配项即可。使用单元格 $L$1 中的字符串示例,针对我懒得称之为 Table1 的表,我可以得到该列的 SUM:
=SUM(INDEX(Table1,,MATCH($L$1,Table1[#Headers],0)))
注意双逗号 - 第一个逗号表示行号,第二个逗号表示此 MATCH 返回柱子数字。
假设您尝试从该列中获取特定行的值,对于 Customer = Acme 来说,可能如下所示:
=INDEX(Table1,MATCH("Acme Plc",Table1[Customer],0),MATCH($L$1,Table1[#Headers],0))