11

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

如果我创建一个名为“table1”的表,其中包含“col1”和“col2”列,我将如何使用另一个表中的结构化引用来引用“col1”中的第一行?我已经尝试了语法=table1[[#this row],[col1]],只是得到一个错误。有没有类似的语法=table1[1,1] or =table1[1,[col1]]?当然,这也不起作用,但是等价的又是什么呢?

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

4

6 回答 6

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,则返回零)。如果您的值不是数字,那么您显然不能使用此方法。

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

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

于 2012-06-16T17:13:56.563 回答
4

尝试

=INDEX(col1,1)

您甚至可以使用 2-dim 表中的单元格寻址

=INDEX(reference,row_num,column_num)
于 2009-12-10T10:58:27.580 回答
2

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

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

等等

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

于 2018-03-01T09:53:13.927 回答
0

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

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

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

于 2009-12-10T11:55:26.960 回答
0

我会建议使用 SUMIF 而不是 INDEX。它将允许您使用表值而不是显式行号(如果您开始过滤或排序,可能会中断)。例如(来自以下链接),这对 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

于 2011-08-17T19:02:22.793 回答
0

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

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

于 2017-08-26T14:45:17.470 回答