使用vlookup公式的列参考
在Excel中插入表格时,可以参考:
- 数据范围
Table[#data]
数据Table[#data]
- 标题范围
Table[#header]
- 满栏范围
Table[column name]
或 - 某一列下的当前行的值
Table[@[colum name]]
这使公式非常容易阅读: =COUNTIF(A:A,A1)
变成
=COUNTIF(Suppliers[IBAN],Suppliers[@[IBAN]])
快速检查当前行值的重复项(IBAN)。
我现在试图将=VLOOKUP([@SupplierCode],Suppliers[Code],2,False)
转换成
=VLOOKUP([@SupplierCode],Suppliers[Code],Suppliers[Name],False)
换句话说, 就是获得一个tableObject中的一列的列索引,以在公式中使用它(即,vlookup) 。
我大概可以写一个VBA函数来做到这一点,但我试图找出Excel是否有办法处理这个没有VBA代码
我不想要的VBA解决scheme (但如果不可能 ,可能会解决):
Public Function GetColumnIndex(TableName As String, ColumName As String) As Long GetColumnIndex = ActiveSheet.ListObjects(TableName).ListColumns(ColumName).Index End Function
允许我写: =VLOOKUP([@SupplierCode],Suppliers,GetColumnIndex("suppliers","Name"),FALSE)
作品,只要表格在同一张表上
现在添加为答案: =MATCH("Name",Suppliers[#Headers],0)
给出了匹配名称的头的索引
我可以认为没有VBA的唯一方法就是使用Match()函数
=VLOOKUP([@SupplierCode],Suppliers,MATCH("Name",Suppliers[#Headers],0),FALSE)
我发现这个链接是无价的使用结构化引用与Excel表
我创build了一个有两列的供应商表,供应商代码和名称,然后在每个标题下面添加了几个条目。
当我粘贴你的=VLOOKUP(@SupplierCode,Suppliers[Code],2,False)
进入我桌子第一排右侧的单元格,我遇到了一个我从未见过的消息:
当closures时,公式的@Supplier
部分被突出显示。 将其更改为Suppliers[@SupplierCode]
解决了该问题。
假设SupplierCode位于表格的第一列中,您可以使用VLOOKUP函数中的MATCH函数find查找列,就像您已经发现的一样。
使用表格,我认为更好的select是用这种方式用INDEX公式代替VLOOKUP公式:
= INDEX(MyTableName [NameOfFieldContainingReturnValue],MATCH(LookupValue,MyTableName [NameOfFieldContainingLookupValue],0))
一些评论:
-
索引函数可以用这种方式引用一个简单的列:= INDEX(MyTableName [FieldName]; 4)
-
这将返回第4行的“FieldName”列中的值
-
由于我们不知道行号,我们可以在包含查找值的列中使用MATCH(在使用vlookup公式的情况下,这是最左边的列)。