Excel结构化参考表语法

时间:2009-12-10 10:49:33

标签: excel syntax cross-reference

我尽量避免使用Excel太多,但是当我这样做时,我喜欢使用结构化引用,因为它们看起来更清晰。

如果我使用“col1”和“col2”列创建一个名为“table1”的表,我将如何使用另一个表中的结构化引用引用“col1”中的第一行?我尝试过语法=table1[[#this row],[col1]],只是出错了。有=table1[1,1] or =table1[1,[col1]]之类的语法吗?当然,这也不起作用,但有什么相同的?

这很烦人,因为看起来这应该很简单。

6 个答案:

答案 0 :(得分:13)

Table1[[#This Row][Column1]] 有效,但公式必须与您要引用的表格行位于同一行。

要在其他地方引用第一行,请使用COUNTIFS(criteria_range1, criteria1 [, criteria_rangen, criterian])或更复杂的SUMIFS(),如果您需要数值而不是计数,如studgeek所述:

SUMIFS(sum_range1, criteria_range1, criteria1 [, criteria_rangen, criterian])

您当然需要一个独特的行标准来选择行。所以,例如:

Table1
ID Value Name
1  2     Two
2  4     Four
3  8     Eight

SUMIF(Table1[Value], Table1[ID], 2) ...返回值4(如果未找到ID = 2,则返回零)。如果您的值不是数字,那么显然您不能使用此方法。

然而,奥库几乎达到了真正的答案,但在他的解释/例子中,他没有走得足够远,IMO。

INDEX(Table1[Name], 2)返回“四” INDEX(Table1, 1, 1)返回1

答案 1 :(得分:4)

=INDEX(col1,1)

你甚至可以使用

来处理2-dim表中的单元格
=INDEX(reference,row_num,column_num)

答案 2 :(得分:2)

在这种情况下的诀窍是使用Excel OFFSET函数:

  • 在同一个表中访问名为Column1的第一行:OFFSET([Column1],0,0,1)
  • 访问第二行OFFSET([Column1],1,0,1)

当然,您只需在其前面加上表名,就可以使用它来获取另一个表和列。例如,OFFSET(Table2[Column3],4,0,1)将访问“Table2”

列“Column3”的第4行

答案 3 :(得分:0)

似乎没有一种明确的方法可以对表中的特定行使用结构化引用。 正如Adrian所说,你可以使用INDEX。

或者您可以使用隐式交集来引用同一行: 如果table1在第5:10行,而表2也在第5:10行,那么使用带有列名的结构化引用将隐式地与同一行相交。

或者您可以在不同的行中输入结构化引用作为多行数组公式(选择多个单元格,输入公式并使用Ctrl-shift-Enter),它将起作用。

答案 4 :(得分:0)

而不是INDEX我会建议SUMIF。它将允许您使用表值而不是显式行号(如果您开始过滤或排序,则可能会中断)。例如(来自以下链接),它将Amount列相加,并且仅包括Type等于Check的那些行以及Account等于Utilities的那些行: =SUMIFS(Table1[Amount],Table1[Type],“Check”,Table1[Account], “Utilities”)

点击此链接了解详情:http://office.microsoft.com/en-us/excel-help/using-structured-references-with-excel-tables-HA010155686.aspx

答案 5 :(得分:0)

如果一个表可以将一个列指定为主键(可以是数字或字符串),那么结构化引用可以包括一种通过它的主键引用行的方法。

这将是VLOOKUP周围的语法糖,但是表可以知道它是否在主键上排序,并且仅在这种情况下进行有效查找。似乎VLOOKUP在其中嵌入了邪恶,如果您依赖于排序,它会找到错误的行,尤其是当表格有一种方便的排序方式时。