我正在使用两个不同的工作簿,第一个工作簿 [仅 Excel 数据] 创建为数据库,第二个工作簿 [发票模板] 创建用于创建发票。
创建发票时,我使用偏移量来读取客户位置列表等。
=OFFSET('[Excel Data Only.xlsx]Channels'!$A$2,MATCH(Invoice!$C$1,'[Excel Data Only.xlsx]Channels'!$A$2:$A$198,0)-1,1,COUNTIF('[Excel Data Only.xlsx]Channels'!$A$2:$A$198,Invoice!$C$1),1)
并且它运行正常。
问题是当我想创建工作簿 [发票模板] 的副本时,该副本将具有不同的路径,例如在桌面上,偏移量更改为
=OFFSET('C:\Users\anthony\Desktop\[Excel Data Only.xlsx]Channels'!$A$2,MATCH(Invoice!$C$1,'C:\Users\anthony.boulos\Desktop\[Excel Data Only.xlsx]Channels'!$A$2:$A$198,0)-1,1,COUNTIF('C:\Users\anthony.boulos\Desktop\[Excel Data Only.xlsx]Channels'!$A$2:$A$198,Invoice!$C$1),1)
因此,[仅 Excel 数据] 工作簿的路径自动更改且不再可访问,因为我仅更改了 [发票模板] 的路径,而不是另一个。
那么我该如何管理这个公式,以便在更改 [发票模板] 的路径时它不会影响 [仅 Excel 数据] 的路径。
谢谢你的帮助!
答案1
当您打开带有外部引用的 excel 文件(并允许它执行更新,此时您会收到安全警告)时,Excel 似乎会执行一些自动化操作来解析引用。它似乎针对您移动源和目标的情况进行了优化,尤其是对于更改驱动器号(可能是软盘时代的遗留问题?)。
不幸的是,如果您单独移动目标文件(Invoice Template.xlsx
在您的示例中),这可能会破坏一切。
修复问题最快的方法可能是通过功能区edit links
中的对话框Data
。那里有一个包含所有外部文件的表格,您可以更改这些文件的指向位置 ( change source
)。当您将路径更正到Excel Data Only.xlsx
那里时,它应该会立即更新电子表格中对此文件的所有引用。
答案2
如果您在需要批量更新大量文件时遇到问题(或者您只是想冒险,哦,别忘了先备份!),您可以尝试编辑原始文件*.xlsx
。它实际上是一个 zip 存档。
如果你使用存档资源管理器打开它(7-zip例如),您将在子目录中找到外部引用\xl\externalLinks\_rels\
。可能有一个名为的文件externalLink1.xml.rels
(数字可能有所不同)。它是一个包含(相对)文件路径和名称的 XML 文件。您可以在那里更新它。它将被输入为.../externalLinkPath
将其标记为相对于文件位置。将该类型更改为http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing
也可能解决问题。
您的 externalLink1.xml.rels 可能看起来像我还没有专门测试过该路径:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship
Id="rId1"
Type="http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing"
Target="'C:\Users\anthony\Desktop\channels%20(BE%20VERY%20VERY%20PRECAUTIOUS%20WITH%20THIS%20FILE)!!!!\0000%20TEMPLATES\INVOICE%20template\New%20template\Excel%20Data%20Only.xlsx "
TargetMode="External"
/>
</Relationships>
附言:我不鼓励在 Excel 文件或路径中使用特殊字符(括号、感叹号等),因为这也可能会引起麻烦。