【问题标题】:How do get the index of a table's column by using a structured reference in excel?如何通过在excel中使用结构化引用来获取表列的索引?
【发布时间】:2008-12-12 21:11:32
【问题描述】:

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

因此,例如,对于具有列 ABC 的表 MyTable,我希望能够编写:

=GetIndex(MyTable[C])

并让它返回 3。

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

=Column(MyTable[C])

但我想要更强大的东西。

【问题讨论】:

    标签: excel excel-2007 excel-formula


    【解决方案1】:

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

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

    【讨论】:

    • 尽管我认为 OP 并不特别想要这个解决方案,但这正是我想要的。谢谢你。看到“=MATCH(”
    • 在此公式中使用字符串文字 "C" 意味着如果您更改引用表中 C 列的名称,此公式将中断。 Robert Mearns 的回答能够使用 MyTable[C] 作为参考,当您重命名参考表中的 C 列时,该参考将更新。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我不得不从您的帖子中删除图片,因为 ImageShack 已将其删除并替换为广告。请参阅meta.stackexchange.com/q/263771/215468 了解更多信息。如果可能,您最好重新上传它们。谢谢!
    【解决方案3】:

    你的意思是:

    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
    

    【讨论】:

    • 我认为这是做了两个假设。基本上我想要一种定义任何范围的表“MyTable”的方法。然后我希望能够获得相对于“MyTable”中第一列的命名列的索引,这个函数可以做到吗?请记住,我使用的是结构化引用。无论哪种方式 ty
    【解决方案4】:

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

    【讨论】:

    • 有没有办法获取表格的第一列?我不想被锁定在“A”总是在第一个索引处。谢谢
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-05
        • 1970-01-01
        • 2013-12-03
        相关资源
        最近更新 更多