2009-12-10 101 views
7

我尽量避免使用Excel太多,但是当我喜欢使用结构化引用时,因为它们似乎更清晰易于编写。Excel结构化参考表语法

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

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

回答

12

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未找到)。如果你的值不是数字,那么显然你不能使用这个方法。但是,akuhn几乎达到了真正的答案,但他在他的解释/例子IMO中并没有走得太远。

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

2

尝试

=INDEX(col1,1) 

,你甚至可以解决细胞在2维度表,使用

=INDEX(reference,row_num,column_num) 
0

似乎没有要使用结构化引用到特定行的明确方式表。正如Adrian所说,你可以使用INDEX。

或者你也可以使用隐路口引用同一行: 如果table1的是5:10的行和表2也于5:10排然后使用与列名的结构化引用将隐含相交同一行。

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

0

而不是INDEX我会建议SUMIF。它会让你使用表值而不是明确的行号(如果你开始过滤或排序,它可能会中断)。例如(从下面的链接),这个总结金额列,只包括其中Type等于检查和其中帐户等于公用设施的那些行: =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

0

这将是很好如果表可以具有指定作为主键(其可以是数字的或字符串)的柱,然后以结构化REF可以包括通过它的主键引用行的方式。

这将是VLOOKUP附近的语法糖,但表可以知道它是否在主键上排序,并且仅在这种情况下才进行高效查找。似乎VLOOKUP嵌入邪恶,如果你依赖排序,发现错误的行,尤其是当表有一个方便的方法来排序行。

0

在这种情况下,关键是要使用Excel OFFSET函数:

  • 访问同一表命名列1列第1行:OFFSET([Column1],0,0,1)
  • 访问第二排OFFSET([Column1],1,0,1)

等。

当然,您可以使用此参数来使其他表和列加前缀,只需在表名前添加它即可。例如OFFSET(Table2[Column3],4,0,1)将访问'Table2'列'Column3'的第4行