我很难将VLOOKUP
语句转换为简单引用工作表和范围(类似于魅力),而是使用表名和列名。
我试图让VLOOKUP
更加健壮,因为它所从的工作表将不断改变数据,因此列数会经常变化。因此,我只想按名称引用一列。
这个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)
通常情况下,我会继续尝试这个...但我感到不知所措,并且已经尝试了几个小时。任何建议都会很棒。
谢谢!
答案 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/