6

我有一个有 3 列的表。我想编写一个公式,给定结构化引用,返回列的索引。这将帮助我使用结构化参考编写 VLookup 公式。

因此,例如,对于带有 columns 的表,MyTableA希望能够编写:BC

=GetIndex(MyTable[C])

并让它返回 3。

现在我只是确保表格范围从工作表的第一列开始,然后我写

=Column(MyTable[C])

但我想要更强大的东西。

4

6 回答 6

7

基于您的示例的合适公式是

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

论坛的第一部分COLUMN(MyTable[C])将返回引用列的列号。

公式COLUMN(MyTable)的第二部分将始终返回表格第一列的列号。

于 2009-10-07T23:46:49.713 回答
5

您提出的问题(或接近它的问题)的另一个解决方案是使用类似的东西=MATCH("C",MyTable[#Headers],0),这将在您发布的示例中返回 3。

但是,如果您使用 INDEX 而不是 VLOOKUP,则不需要这样做。例如,如果您想在 A 等于 2 的行中找到 C 的值(假设不超过一个),您可以使用类似 的公式=INDEX(MyTable[C],MATCH(2,MyTable[A],0)),它可以很好地自我记录。

于 2011-08-17T19:44:03.713 回答
1

你的意思是:

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
于 2008-12-12T22:05:16.977 回答
0

您可以使用: ,您想要索引的列在哪里。=COLUMN(MyTable[*]) - COLUMN(MyTable[A]) + 1*

于 2008-12-12T21:54:32.677 回答
0

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

于 2009-10-07T18:17:17.727 回答
0

你的最终目标是什么?您最好使用 SUMIF(如我在此处描述)或 INDEX(如我在此处描述)来访问您的值,而不是跳回行/列...

于 2011-08-17T19:24:00.217 回答