簡體   English   中英

如何通過在excel中使用結構化引用來獲取表列的索引?

[英]How do get the index of a table's column by using a structured reference in excel?

我有一個有3列的表。 我想編寫一個公式,給定結構化引用,返回列的索引。 這將幫助我使用結構化引用編寫VLookup公式。

因此,例如,對於包含ABC列的表MyTable ,我希望能夠編寫:

=GetIndex(MyTable[C])

並讓它返回3。

現在我只是確保表格范圍從工作表的第一列開始,然后我寫

=Column(MyTable[C])

但我想要一些更強大的東西。

根據你的例子,一個合適的公式是

=COLUMN(MyTable[C])-COLUMN(MyTable)+1

論壇欄的第一部分COLUMN(MyTable[C])將返回引用列的列號。

公式COLUMN(MyTable)的第二部分將始終返回表的第一列的列號。

你問的問題(或接近它的問題)的另一個解決方案是使用類似=MATCH("C",MyTable[#Headers],0) ,它將在你發布的例子中返回3。

但是,如果您使用INDEX而不是VLOOKUP,則不需要執行此操作。 例如,如果你想在行中找到C的值(假設不超過一個),其中A等於2,你可以使用類似=INDEX(MyTable[C],MATCH(2,MyTable[A],0))的公式=INDEX(MyTable[C],MATCH(2,MyTable[A],0)) ,這是很好的自我記錄。

你的意思是:

Dim r As Range
MyLetter ="AA"
Set r = Range(MyLetter & "1")
MyIndex= r.Column

編輯重新評論

Function GetRelativeColumn(Letter, RangeName)
Dim r As Range
Dim ColStart, ColRequired, ColTemp
Set r = Range(RangeName)

ColStart = r.Column
ColRequired = Range(Letter & "1").Column
ColTemp = ColRequired - ColStart + 1
If ColTemp < 1 Or ColTemp > r.Columns.Count Then
    MsgBox "Ooutside range"
Else
    GetRelativeColumn = ColTemp
End If
End Function

=對eJames的響應稍作修改:= COLUMN(MyTable [*]) - MIN(COLUMN(MyTable))+ 1,其中*是您想要索引的列。

你可以使用: =COLUMN(MyTable[ * ]) - COLUMN(MyTable[A]) + 1 ,其中*是你想要的索引的列。

你的最終目標是什么? 你可能最好使用SUMIF(我在這里描述)或INDEX(我在這里描述)來訪問你的值而不是跳回到行/列......

暫無
暫無

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

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