【发布时间】:2018-10-03 15:15:39
【问题描述】:
在Excel中插入表格时可以参考:
- 数据范围
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 解决方案(但如果不可能,可能会解决):
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():例如 =VLOOKUP(@SupplierCode,Suppliers[Code],MATCH("??Name??",Suppliers[#Headers], 0),假)
-
no Suppliers[??Name??] 无效,我将其用作我期望其工作方式的占位符。
-
那么如果你替换“??Name??”会发生什么?使用您要查找的任何列名称或使用您想要的名称的单元格引用?
-
对不起,我没有看到你已经把 Match 放在那里,如果你把它作为答案发布,我会接受它。想了想,不知怎么得出了同样的结论,没想到你已经给出了答案
-
好的,现在添加为答案
标签: excel