在VLOOKUP中使用表和列标题

时间:2017-07-26 12:21:35

标签: excel excel-formula vlookup

我很难将VLOOKUP语句转换为简单引用工作表和范围(类似于魅力),而是使用表名和列名。

我试图让VLOOKUP更加健壮,因为它所从的工作表将不断改变数据,因此列数会经常变化。因此,我只想按名称引用一列。

  1. 我已将源数据表转换为表格。
  2. 我已正确命名所有列并仔细检查拼写。
  3. 这个VLOOKUP效果很好(目前):

    =VLOOKUP(E6,'Costs'!$A$2:$AE$84,19,FALSE)
    

    但是,我想做的是让它看起来:

    =VLOOKUP(E6,tblCosts[Order Number],tblCosts[June 2017], FALSE)
    

    我一直在努力尝试使用不起作用的MATCH:

    =VLOOKUP(E31,tblCosts[Order Number],MATCH(F4,tblCosts[June 2017],FALSE),FALSE)
    

    更新

    此公式现在有效,但它返回订单号...而不是当月的费用。

    =VLOOKUP(E31,(tblCosts[Order Number]),(tblCosts[June 2017]),FALSE)
    

    通常情况下,我会继续尝试这个...但我感到不知所措,并且已经尝试了几个小时。任何建议都会很棒。

    谢谢!

3 个答案:

答案 0 :(得分:3)

这应该适合你:

=VLOOKUP(E31,tblCosts[#All],COLUMN(tblCosts[Jun-17]),false)

COLUMN(TblCosts [Jun-17])返回所需字段的列号。

VLookup搜索tblCosts [#All]的第一列 - (表中的所有数据)中的数据(在E31中),并返回所需列中的数据。

即使您向数据添加列或行,此公式也将继续有效。

确保在电子表格中看起来像日期的任何标题,例如" Jun-17"存储为文本而不是日期,因为它不匹配字符串" Jun-17"当你使用VLookup。

答案 1 :(得分:0)

由Rob Anthony提供

= VLOOKUP(E37,tblCosts [#ALL],COLUMN(tblCosts [6月-17]),FALSE)

答案 2 :(得分:0)

=VLOOKUP(E37,tblCosts[#All],match("Jun-17", tblCosts[#Headers]),FALSE)

此匹配项在所有列标题中寻找列名,并将返回第一列右侧的列数,而不是工作表中的列号。这样可以避免在表不在A列开始时不必使用COLUMN(tblCosts[Jun-17]) - COLUMN(tblCosts[Order Number]) + 1

参考:https://www.excel-university.com/vlookup-hack-4-column-labels/