0

目前: 我有几张包含一个或多个表格的表格(例如,Sheet1 有一个表格,而 Sheet2 有三个表格)。在多个最终用户工作簿中都可以找到这些相同的工作表。这些工作表中的表格供工作簿中单元格公式中的结构化引用使用。

目标: 我想要另一个工作簿(主工作簿),其中只有包含表格的工作表。将手动对主工作簿进行更新,即添加一行、删除一行、编辑一行、添加一列、删除一列、编辑一列。 使用主工作簿完成更新后,更新后的 [主] 工作表将被放置到各种用户工作簿中,替换现有工作表和表格(使用 VBA)......而不会破坏结构化引用!没有#REF 错误! 嗯,这就是我所设想的,但是,它不必完全是这样。此外,公用表必须在最终用户工作簿中,不能外部引用!除非它是使我需要工作的过程的一部分,当然:-)

我对 VBA 非常方便,但不是 MVP。假设所有工作簿(最终用户和主用户)都存在于同一目录中。主工作簿将包含将更新的工作表传递给最终用户工作簿的代码。Windows 7 环境中的 Excel 2007 和 2010。

我没有任何代码,因为我试图先手动找出它而不破坏任何东西。欢迎提出建议!谢谢你。


[更新 13Jun2012]希望这个更冗长的解释会有所帮助。

我在做什么: 我有一个工作簿(基本上)将自身复制到最终用户工作簿中(基于用户表单输入的 1 到 n 次)。最终用户工作簿受到保护,以防止最终用户在某些公式中出错(各种形式的工作表/单元格保护)。有些工作表包含表格,这些表格对所有用户都是相同的。这些表用于数据验证(例如,允许:列表;来源:=timing_droplist)和 VLOOKUP(例如,=VLOOKUP($W8,Timing_table,FE$5+1,FALSE))。这些最终用户工作簿每年创建一次,但在一年中更新了三次(它们用于财务/预算)。表格可以随时更新。由于数据被添加到最终用户工作簿中,因此使用更新的表重新生成这些工作簿然后让最终用户重新输入他们的所有数据是不方便的。

发生了什么(仅一个示例): “Timing”表存在并包含表“Timing_table”。如果将主“Timing”表添加到工作簿,Excel 会将其重命名为“Timing (2)”。这个是正常的。但是添加的工作表中的表变成了本地而不是全局表,并且它也被重命名,例如,“Timing_table12”。我不知道 Excel 是如何得出表名的数字的,它们可能会改变。如果我删除旧的“计时”表,所有对它的引用都会被破坏(当然)——拉起名称管理器会显示#REF!在值列中。重命名新引用并不能解决问题,因为新引用在新工作表中是本地的。

我尝试手动将一个表格剪切并粘贴到另一个表格中,粘贴为文本,但这不保留公式(基本上它执行粘贴为值操作),总的来说,不起作用。只是在寻找选项。对这些表的外部引用不是一种选择。

4

2 回答 2

1

我认为这个线程可能会帮助你:http ://www.ozgrid.com/forum/showthread.php?t=66791

直接给你回复(假设问题主要涉及外部引用): Aaron Blood 回复: Re: Copy Formula To New Worksheet without Path

您已经开发了复制/粘贴到新工作表和工作簿的代码。现在您需要做的就是扫描新工作表的公式并从公式中删除 ext refs。

在现有的复制/粘贴宏的末尾运行类似的东西......

VB:

Sub ExtRef_Remover() 

Dim cell As Range, n As Variant 

For Each cell In Workbooks("New_WB").Sheets("Sheet1").Cells.SpecialCells(xlFormulas) 
    n = Application.Find("]", cell.Formula) 
    If Not IsError(n) Then 
        cell.Formula = "='" & Right(cell.Formula, Len(cell.Formula) - n) 
    End If 
Next cell 
End Sub 
于 2012-06-13T07:47:41.863 回答
0

使用广泛的外部参考在这个项目中没有奏效,所以我说服项目经理我们需要改变路线。她同意,除了影响工作簿的生成和稳定性之外,她想要的要求太多,实施起来也花费了太多时间。我最终通过命令按钮将数据拉入必要的表中。Waaaay 更易于使用且稳定。

于 2012-10-05T14:30:01.640 回答