Excel Vlookup公式供透视表参考

时间:2018-09-04 10:09:30

标签: excel vlookup

我在一张纸上有一个营养数据库数据透视表,在另一张纸上有一个饮食计划程序。输入食物时,我想引用其他单元格以从数据透视表中查找其值。我可以这样做,但是我的问题是,如果我向表中添加更多列,则它们将全部不同步。

=IFERROR(VLOOKUP($C7,NutritionDatabase,6,FALSE),0)

如果我将食物输入C7,则当前正在使用上面的公式在NutritionDatabase数据透视表的第6列中查找每100克的大卡。

有什么方法可以查找列标题并引用与C7中的食物相同的行中的数据。营养数据库[[#This Row],[Kcalsp100]]

下面是类似的事情,但是除了不起作用之外?

=VLOOKUP($C7,NutritionDatabase[[#This Row],[Kcalsp100]],FALSE)

请问您能提供任何经验和提示吗?

这将非常有用,因为将来我想通过添加更多数据和列来扩展NutritionDatabase,如果我引用的是列号,那么当我这样做时,我将不得不更改所有内容。

enter image description here

enter image description here

谢谢!

2 个答案:

答案 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表示它应该是完全匹配。

这是另一个简单示例的图像:

enter image description here