[英]Using a column reference for a vlookup formula
在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("Name",Suppliers[#Headers],0)
給出與名稱匹配的標題的索引
在沒有VBA的情況下我能想到的唯一方法就是使用Match()函數
=VLOOKUP([@SupplierCode],Suppliers,MATCH("Name",Suppliers[#Headers],0),FALSE)
我發現這個鏈接非常寶貴使用結構化引用和Excel表格
我創建了一個包含2列的小供應商表,SupplierCode和Name,然后在每個標題下面添加了幾個條目。
當我粘貼你的=VLOOKUP(@SupplierCode,Suppliers[Code],2,False)
進入我桌子第一排右側的一個牢房,我遇到了一條我從未見過的信息:
當關閉時,公式的@Supplier
部分會突出顯示。 將其更改為Suppliers[@SupplierCode]
修復了該問題。
假設SupplierCode位於表的第一列,您可以使用您已發現的VLOOKUP函數中的MATCH函數找到查找列。
使用表格,我認為更好的選擇是用這種方式用INDEX公式替換VLOOKUP公式:
= INDEX(MyTableName [NameOfFieldContainingReturnValue],MATCH(LookupValue,MyTableName [NameOfFieldContainingLookupValue],0))
一些評論:
索引函數可以用這種方式引用一個簡單的列:= INDEX(MyTableName [FieldName]; 4)
這將返回“FieldName”列中第4行的值
由於我們不知道行號,我們可以在包含查找值的列中使用MATCH(在使用vlookup公式的情況下,這將是最左列)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.