Excel结构化参考表语法

Excel结构化参考表语法,excel,syntax,cross-reference,Excel,Syntax,Cross Reference,我尽量避免过多地使用Excel,但当我这样做时,我喜欢使用结构化引用,因为它们看起来编写起来更简洁 如果我创建一个名为table1的表,其中包含col1和col2列,那么如何使用另一个表中的结构化引用引用col1中的第一行?我尝试了syntax=table1[[this row],[col1]],但得到了一个错误。是否有类似于=table1[1,1]或=table1[1[col1]]的语法?当然,这也不起作用,但等价物是什么 这很烦人,因为看起来这应该很简单。试试看 =INDEX(col1,1)

我尽量避免过多地使用Excel,但当我这样做时,我喜欢使用结构化引用,因为它们看起来编写起来更简洁

如果我创建一个名为table1的表,其中包含col1和col2列,那么如何使用另一个表中的结构化引用引用col1中的第一行?我尝试了syntax=table1[[this row],[col1]],但得到了一个错误。是否有类似于=table1[1,1]或=table1[1[col1]]的语法?当然,这也不起作用,但等价物是什么

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

试试看

=INDEX(col1,1)
您甚至可以使用

=INDEX(reference,row_num,column_num)

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

也可以使用隐式交点引用同一行: 如果表1在第5:10行,表2也在第5:10行,则使用具有列名的结构化引用将隐式地与同一行相交


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

我建议使用SUMIF代替索引。它将允许您使用表值,而不是显式的行号,如果您开始筛选或排序,这些行号可能会中断。例如,在以下链接中,这将对“金额”列求和,并且仅包括类型等于“检查”且帐户等于“实用程序”的行: =SUMIFSTable1[金额]、表1[类型]、“支票”、表1[账户]、“公用事业”

请参阅此链接了解更多信息:

Table1[[此行][Column1]]确实有效,但公式必须与要引用的表格行位于同一行

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

SUMIFS(sum_range1, criteria_range1, criteria1 [, criteria_rangen, criterian])
当然,您需要一个唯一的行条件来选择行。例如:

Table1
ID Value Name
1  2     Two
2  4     Four
3  8     Eight
可采储量1[Value],表1[ID],2。。。如果找不到ID=2,则返回值4或零。如果您的值不是数字,那么显然不能使用此方法

然而,akuhn几乎找到了真正的答案,但他在解释/示例IMO中做得不够深入

INDEXTable1[Name],2返回四个
INDEXTable1,1,1返回1

如果一个表可以有一个列指定为主键,可以是数字或字符串,那么结构化引用就可以包含一种通过主键引用行的方法


这对于VLOOKUP来说是语法上的甜点,但是表可以知道它是否按主键排序,并且只在这种情况下进行有效的查找。似乎VLOOKUP在其中嵌入了一种邪恶,即如果依赖于排序,则会发现错误的行,尤其是当表格有一种方便的方式对行进行排序时。

这种情况下的诀窍是使用Excel偏移函数:

访问同一表中名为Column1的列的第一行:偏移量[Column1],0,0,1 访问第二行偏移量[Column1],1,0,1 等等


当然,您可以使用它来访问另一个表和列,只需在其前面加上表名即可。例如OFFSETTable2[Column3],4,0,1将访问“Table2”的“Column3”列的第4行。

这似乎与结构化表的精神有点矛盾。一个好的做法是在行的排序中不应该捕获任何信息。列是属性,行是实例或观察值。考虑添加一个索引列,如顺序或日期,或序列,然后选择一个序列为1的序列。RangeSoLoopLoad第四参数到VLoopUp函数需要精确的匹配,即使在未排序的表中也可以工作。如果找不到匹配项,则返回错误。