[英]Excel Vlookup formula for pivot table reference
我在一张纸上有一个营养数据库数据透视表,在另一张纸上有一个膳食计划器。 当我输入食物时,我想引用其他单元格以从数据透视表中查找它的值。 我可以这样做,但我的问题是,如果我向表中添加更多列,它就会完全不同步。
=IFERROR(VLOOKUP($C7,NutritionDatabase,6,FALSE),0)
如果我将食物输入 C7,我目前正在使用上面的这个公式在我的 NutritionDatabase 数据透视表的第 6 列中查找每 100 克的千卡。
有什么方法可以查找列标题并引用与 C7 中的食物相同的行中的数据。 营养数据库[[#This Row],[Kcalsp100]]
类似于下面的内容,但除此之外不起作用?
=VLOOKUP($C7,NutritionDatabase[[#This Row],[Kcalsp100]],FALSE)
请问大家有什么经验和建议吗?
这将非常有用,因为将来我想通过添加更多数据和列来扩展 NutritionDatabase,如果我引用的是列号,那么当我这样做时,我将不得不更改所有内容。
谢谢!
您可以尝试在 VLOOKUP 中为您使用col_index_num
的 MATCH 函数:
=MATCH (lookup_value, lookup_array, [match_type])
更多信息: https : //exceljet.net/excel-functions/excel-match-function
匹配功能:
MATCH("Kcalsp100",NutritionDatabase!$A1:$A15,1)
这将做的是再次匹配查找值与第一行、列标题,并返回具有匹配名称的列的索引(列号)。
查找功能:
=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
范围以匹配您的方案。
我建议使用 INDEX-MATCH-MATCH。 VLOOKUP 的速度要快得多(可能对您的用例来说不是那么重要,但对于大量数据来说,这是必须的),并且适应性更强。
它以以下形式使用:
=INDEX(<LookUpRange>, MATCH(<RowValToFind>,<RowRange>,0), MATCH(<ColValToFind>,<ColRange>,0))
因此,在您的膳食计划表的单元格 F7 中,您可以使用:
=INDEX(NutritionDatabase!$F$3:$I$6, MATCH($C7,NutritionDatabase!$A$3:$A$6,0), MATCH(F$6,NutritionDatabase!$F$2:$I$2,0))
我知道这开始看起来很复杂,但是当你分解它时,它并没有太糟糕,而且比 VLOOKUP 更快、更通用。
基本上,它是说:
=INDEX(<get the value from in this table where...>, MATCH(<this value appears in...>, <this list of row headers and...>,0), MATCH(<this value appears in...>, <this list of column headers>, 0))
并不是说匹配中的 0 表示它应该是完全匹配。
这是另一个简单示例的图像:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.