结构化参考:通过复制过去保存名称

所以我使用用户数据的结构化引用。 最终我们会有一个合适的导入程序,但是我希望能把它推迟到以后,现在就使用原始数据的复制。

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

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

我希望现在指导他们直接复制。 因为我正在处理标题而不是位置,所以我认为公式仍然可以工作。

在下面的图片中进行总结:= tTest [Column2]是为右边框设置的公式。 它应该参考第2栏的内容(所以2)。 如果我复制 – 通过不同的标题,“Column0”将所有内容都转移到右侧,则可以看到excel实际使用位置引用来引用您的数据。 它现在返回“1”,Excel甚至将公式更改为“= tTest [Column1]”。

在这里输入图像说明

在这里输入图像说明

对我来说似乎是错误的 – 例如,如果你通过名字引用某些东西,你不希望它真正被位置引用。

我已经尝试过tTest [[header]:[header]],它也没有工作。

所以,最后,我认为最好写一个合适的导入程序。 我不会在这里发帖,因为它有点牵扯,有各种检查执行。 但总体步骤是:

  • 文件select器select要input的数据
  • 将所有内容复制到ThisWorkbook中,closuresinput文件
  • 将input数据的列标题与mytable.HeaderRowRange匹配
  • 如果find匹配,则将原始数据复制到适当的列中

所以基本上写一个脚本来对列标题进行匹配,这是我以为Excel会做的。 而且还认为应该这样做。 不过考虑一下,这样编写代码可能比实际dynamic调整命名引用而不是位置更简单。

正如鲍勃·菲利普斯所说,你可以使用间接的。 但是,确实需要增加一个额外的INDIRECT(reference_to_table_here),以及所有的引用。 Excel工作表公式足够笨重,我认为没有必要让他们更笨拙。

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