我尽量避免使用Excel太多,但是当我这样做时,我喜欢使用结构化引用,因为它们看起来更清晰。
如果我使用“col1”和“col2”列创建一个名为“table1”的表,我将如何使用另一个表中的结构化引用引用“col1”中的第一行?我尝试过语法=table1[[#this row],[col1]]
,只是出错了。有=table1[1,1] or =table1[1,[col1]]
之类的语法吗?当然,这也不起作用,但有什么相同的?
这很烦人,因为看起来这应该很简单。
答案 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函数:
OFFSET([Column1],0,0,1)
OFFSET([Column1],1,0,1)
等
当然,您只需在其前面加上表名,就可以使用它来获取另一个表和列。例如,OFFSET(Table2[Column3],4,0,1)
将访问“Table2”
答案 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”)
答案 5 :(得分:0)
如果一个表可以将一个列指定为主键(可以是数字或字符串),那么结构化引用可以包括一种通过它的主键引用行的方法。
这将是VLOOKUP周围的语法糖,但是表可以知道它是否在主键上排序,并且仅在这种情况下进行有效查找。似乎VLOOKUP在其中嵌入了邪恶,如果您依赖于排序,它会找到错误的行,尤其是当表格有一种方便的排序方式时。