结构化引用:通过复制过去保留名称

时间:2015-11-24 09:26:22

标签: excel excel-formula

所以我正在使用用户数据的结构化引用。最终我们将有一个正确的导入程序,但我希望将其推迟到以后,而不是现在使用其原始数据的复制过去。

所以我有一个表,比如说tData,它包含一个原始数据输出的副本。该输出已经带有标题,它实际上用于整个工作簿中对数据的结构化引用。

我的问题是原始输出不是100%稳定 - 例如某些列可能会出现&走。那些不用于计算,但它确实影响表结构(列的位置)。我无法控制原始输出。

我希望他们现在可以直接复制过去。当我正在使用标题&没有位置,我认为公式仍然有用。

在下面的图像中总结:= tTest [Column2]是右侧框的公式设置。它应该引用column2的内容(so 2)。如果我复制过去不同的标题,使用“Column0”将所有内容向右移动,您可以看到excel实际使用位置引用来引用您的数据。它现在返回“1”,Excel甚至将公式更改为“= tTest [Column1]。

enter image description here

enter image description here

对我来说似乎有误 - 例如如果您按名称引用某些内容,则不希望它实际上被位置引用。

我已经尝试了tTest [[header]:[header]]并且它也没有工作。

1 个答案:

答案 0 :(得分:0)

所以,最后,我想更好地编写一个正确的导入程序。我不会在这里发帖,因为它有点涉及并且有各种各样的检查要执行。但总体步骤是:

  • 选择要输入的数据的文件选择器
  • 将所有内容复制到ThisWorkbook中,关闭输入文件
  • 将输入数据中的列标题与mytable.HeaderRowRange
  • 匹配
  • 如果找到匹配项,则将原始数据复制到相应的列中

所以基本上编写一个脚本来对列标题进行匹配,这是我认为Excel会做的。并且仍然认为应该这样做。无论如何考虑它,以这种方式编码可能要简单得多,而不是让它实际动态地调整命名引用而不是位置......

如Bob Phillips所述,您可以使用INDIRECT。但是,确实需要在所有引用中添加额外的INDIRECT(reference_to_table_here)。 Excel工作表公式很笨重,我认为不必让它们变得笨重。

即使您使用列名称编写公式,Excel在后台实际上也会使用表中列的位置进行计算。每当您更改工作簿的布局时,它都会为您更新位置。