Excel表数据连接在刷新时删除单元格引用

时间:2013-11-08 20:36:58

标签: excel excel-2007 export-to-excel database-table data-connections

我的Excel工作簿(2007)中有一个数据连接,它引用了另一个Excel工作簿中的表。我有一个单元格引用表格的最后一个列标题中的日期值。每次更新外部工作簿并且此日期值发生更改时,工作簿中的单元格引用将被破坏,单元格将显示#REF

如果它有助于我使用数据库查询。

连接字符串:{替换路径和工作簿名称}

DBQ=PATH\WORKBOOKNAME.xlsx;DefaultDir=PATH;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=excel 12.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;

命令文字:{替换路径}

SELECT * FROM `PATH\WORKBOOKNAME.xlsx`.`Main$` `Main$` ORDER BY `Main$`.IP

这就是H列中单元格值在刷新之前的样子:

enter image description here

这是刷新后列H中的单元格值:

enter image description here

此表的最后一列标题包含一个日期值,该值将在每次更新源工作簿时更改(源工作簿中的易失性日期)。从技术上讲,此日期字段不是其他工作簿表的一部分。但是,数据连接仍然将其拉出并将其包含在主工作表的表中。由于其他依赖性,我无法修改其他工作簿表和格式而不更改其他几个东西。我不确定是否有任何其他方法可以真正引用动态表头或正确引用此单元格,以便引用不会被破坏...

我想在单元格公式中执行此操作,而不必尽可能使用宏。

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您将其用作数据库字段名称,则表的标题不应更改。我可以考虑一种解决方法,因为您直接为源簿中的日期列提供范围名称,例如“日期”。然后在你的另一本书中,让单元格指向源书中的这个范围,即。 make cells = [sourcebookname.xlsx]!日期

答案 1 :(得分:0)

我想解决方案就像使用间接...

一样简单
=INDIRECT("G1")