我在一张纸上有一个营养数据库数据透视表,在另一张纸上有一个饮食计划程序。输入食物时,我想引用其他单元格以从数据透视表中查找其值。我可以这样做,但是我的问题是,如果我向表中添加更多列,则它们将全部不同步。
=IFERROR(VLOOKUP($C7,NutritionDatabase,6,FALSE),0)
如果我将食物输入C7,则当前正在使用上面的公式在NutritionDatabase数据透视表的第6列中查找每100克的大卡。
有什么方法可以查找列标题并引用与C7中的食物相同的行中的数据。营养数据库[[#This Row],[Kcalsp100]]
下面是类似的事情,但是除了不起作用之外?
=VLOOKUP($C7,NutritionDatabase[[#This Row],[Kcalsp100]],FALSE)
请问您能提供任何经验和提示吗?
这将非常有用,因为将来我想通过添加更多数据和列来扩展NutritionDatabase,如果我引用的是列号,那么当我这样做时,我将不得不更改所有内容。
谢谢!
答案 0 :(得分:1)
您可以尝试在VLOOKUP中为col_index_num
使用MATCH功能:
=MATCH (lookup_value, lookup_array, [match_type])
更多信息:https://exceljet.net/excel-functions/excel-match-function
MATCH功能:
MATCH("Kcalsp100",NutritionDatabase!$A1:$A15,1)
此操作将在第一行,列标题中再次匹配查找值,并为具有匹配名称的列返回索引(列号)。
LOOKUP功能:
=VLOOKUP($C7,NutritionDatabase!$A1:$E15,MATCH("Kcalsp100",NutritionDatabase!$A1:$A15,1),FALSE)
编辑:
看看新图片,尝试一下
=VLOOKUP($C7, NutritionDatabase!$A2:$I6,MATCH($F6, NutritionDatabase!$A2:$I2,1),FALSE)
您可能必须更改两个NutritionDatabase
范围以适合您的情况。
答案 1 :(得分:0)
我建议使用INDEX-MATCH-MATCH。 VLOOKUP的速度要快得多(对于您的用例来说可能并不那么重要,但是对于大量数据,这是必须的),并且适应性更强。
它以以下形式使用:
<rewrite>
<rules>
<rule name="mysite https redirect">
<match url="^(mysite\.co.uk|www\.mysite\.co.uk)$" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
因此,在膳食计划表的F7单元格中,您可以使用:
=INDEX(<LookUpRange>, MATCH(<RowValToFind>,<RowRange>,0), MATCH(<ColValToFind>,<ColRange>,0))
我知道一开始这看起来很复杂,但是当您分解它时,它并不比VLOOKUP糟,更快,更通用。
基本上是说:
=INDEX(NutritionDatabase!$F$3:$I$6, MATCH($C7,NutritionDatabase!$A$3:$A$6,0), MATCH(F$6,NutritionDatabase!$F$2:$I$2,0))
不是匹配中的0表示它应该是完全匹配。
这是另一个简单示例的图像: