簡體   English   中英

使用vlookup公式的列引用

[英]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)

進入我桌子第一排右側的一個牢房,我遇到了一條我從未見過的信息:

Excel提醒

當關閉時,公式的@Supplier部分會突出顯示。 將其更改為Suppliers[@SupplierCode]修復了該問題。

假設SupplierCode位於表的第一列,您可以使用您已發現的VLOOKUP函數中的MATCH函數找到查找列。

使用表格,我認為更好的選擇是用這種方式用INDEX公式替換VLOOKUP公式:

= INDEX(MyTableName [NameOfFieldContainingReturnValue],MATCH(LookupValue,MyTableName [NameOfFieldContainingLookupValue],0))

一些評論:

  • 索引函數可以用這種方式引用一個簡單的列:= INDEX(MyTableName [FieldName]; 4)

  • 這將返回“FieldName”列中第4行的值

  • 由於我們不知道行號,我們可以在包含查找值的列中使用MATCH(在使用vlookup公式的情況下,這將是最左列)。

答案可以推廣到查找值不在第一列中的情況:

=VLOOKUP("g";Table[[LookupColumn]:[ValueColumn]];MATCH("ValueColumn";Table[[#Headers];[LookupColumn]:[ValueColumn]];0);FALSE)

如下例所示:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM