Excel formula Excel公式中的Tablecolumn引用在刷新后在表中的新列处更改

Excel formula Excel公式中的Tablecolumn引用在刷新后在表中的新列处更改,excel-formula,refresh,powerquery,Excel Formula,Refresh,Powerquery,我有这样一个公式: =INDEX(tblProduct[Supplier];MATCH([@ProductID];tblProduct[ProductID];0)) 这里“tblProduct”指的是包含查询结果的范围。该数据的来源是另一个Excel工作簿中的表。它有三列: 产品ID 产品名称 供应商 现在,当我在供应商前添加一列,例如“介绍日期”并刷新“从属”工作簿中的数据时,上述公式将更改为: =INDEX(tblProduct[IntroductionDate];MATCH([@Prod

我有这样一个公式:

=INDEX(tblProduct[Supplier];MATCH([@ProductID];tblProduct[ProductID];0))
这里“tblProduct”指的是包含查询结果的范围。该数据的来源是另一个Excel工作簿中的表。它有三列:

  • 产品ID
  • 产品名称
  • 供应商
  • 现在,当我在供应商前添加一列,例如“介绍日期”并刷新“从属”工作簿中的数据时,上述公式将更改为:

    =INDEX(tblProduct[IntroductionDate];MATCH([@ProductID];tblProduct[ProductID];0))
    
    我怎样才能防止这种情况?我知道我可以通过在“从属”工作簿的查询中设置列顺序来防止这种情况,但我认为这是一种解决方法


    那么,有没有一种方法可以“硬”引用“tblProduct[供应商”?

    我意识到您几周前已经问过这个问题,可能不再需要答案,但无论如何都会回答,以防它对其他人有帮助

    我不知道有什么特性可以让你以你描述的方式创建一个绝对的列引用(如果这样的行为可以由用户指定,那就太好了,因为可能也会有需要当前行为的用例)

    我目前所做的是替换:

    tblProduct[Supplier]
    
    与:

    (根据您问题中的公式,您可能需要将
    替换为
    ——但不可以这样做。)

    这种方法的一个好处是,它总是试图查找
    供应商
    列(并返回其中的所有行)——因此在这方面它是“绝对”的。缺点是它使公式复杂化(如果公式已经很长,这可能是个问题)我还没有真正测试过这种方法是否会对性能造成影响


    另一种方法可能涉及使用
    间接(“tblProduct[Supplier]”
    。这种方法的好处是似乎达到了同样的效果。但缺点包括
    间接
    是一个易变函数(因此每次都会重新计算,这可能会恶化电子表格的性能)如果重命名表格,公式中表格的名称不会自动更新



    你也可以认为这是解决办法(与你的想法相比)。

    谢谢你的回复。然后,用列名称作为文字的索引匹配公式也是我正在使用的。我同意你提到的优点和缺点。
    INDEX(tblProduct,0,MATCH("Supplier",tblProduct[#Headers],0))