繁体   English   中英

用于数据透视表参考的 Excel Vlookup 公式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM