在 VLOOKUP 中使用表格和列标题
Using tables and column titles in VLOOKUP
我很难将我的 VLOOKUP
语句从简单地引用 sheet 和范围(就像一个魅力)转换为使用 table 和列名。
我正在尝试使 VLOOKUP
更健壮一些,因为它从中提取的 sheet 会不断更改数据,因此列号会经常更改。因此,我只想通过名称引用一个列。
- 我已将源数据 sheet 转换为 table。
- 我已适当命名所有列并仔细检查拼写。
这个 VLOOKUP 效果很好(目前):
=VLOOKUP(E6,'Costs'!$A:$AE,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)
通常我会自己继续尝试...但我感到不知所措并且已经尝试了几个小时。任何建议都会很棒。
谢谢!!
这应该适合你:
=VLOOKUP(E31,tblCosts[#All],COLUMN(tblCosts[Jun-17]),false)
COLUMN(TblCosts[Jun-17]) returns 你想要的字段的列号。
VLookup搜索tblCosts[#All]的第一列-(table中的所有数据)中的数据(E31中)和returns列中的数据你想要的.
即使您向数据中添加列或行,此公式仍将继续有效。
确保电子表格中任何看起来像日期的标题(例如 "Jun-17")存储为文本而不是日期,因为当您使用 VLookup 时它不会匹配字符串 "Jun-17" .
=VLOOKUP(E37,tblCosts[#All],match("Jun-17", tblCosts[#Headers]),FALSE)
此匹配项正在查找所有列 headers 中的列名,并将 return 第一列右侧的列数而不是 [=19= 中的列号].当您的 table 不在 A 列开始时,这避免了必须使用 COLUMN(tblCosts[Jun-17]) - COLUMN(tblCosts[Order Number]) + 1
。
参考:https://www.excel-university.com/vlookup-hack-4-column-labels/
我很难将我的 VLOOKUP
语句从简单地引用 sheet 和范围(就像一个魅力)转换为使用 table 和列名。
我正在尝试使 VLOOKUP
更健壮一些,因为它从中提取的 sheet 会不断更改数据,因此列号会经常更改。因此,我只想通过名称引用一个列。
- 我已将源数据 sheet 转换为 table。
- 我已适当命名所有列并仔细检查拼写。
这个 VLOOKUP 效果很好(目前):
=VLOOKUP(E6,'Costs'!$A:$AE,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)
通常我会自己继续尝试...但我感到不知所措并且已经尝试了几个小时。任何建议都会很棒。
谢谢!!
这应该适合你:
=VLOOKUP(E31,tblCosts[#All],COLUMN(tblCosts[Jun-17]),false)
COLUMN(TblCosts[Jun-17]) returns 你想要的字段的列号。
VLookup搜索tblCosts[#All]的第一列-(table中的所有数据)中的数据(E31中)和returns列中的数据你想要的.
即使您向数据中添加列或行,此公式仍将继续有效。
确保电子表格中任何看起来像日期的标题(例如 "Jun-17")存储为文本而不是日期,因为当您使用 VLookup 时它不会匹配字符串 "Jun-17" .
=VLOOKUP(E37,tblCosts[#All],match("Jun-17", tblCosts[#Headers]),FALSE)
此匹配项正在查找所有列 headers 中的列名,并将 return 第一列右侧的列数而不是 [=19= 中的列号].当您的 table 不在 A 列开始时,这避免了必须使用 COLUMN(tblCosts[Jun-17]) - COLUMN(tblCosts[Order Number]) + 1
。
参考:https://www.excel-university.com/vlookup-hack-4-column-labels/