目前:我有一些包含一个或多个表的表(例如,Sheet1有一个表,而Sheet2有三个表)。在几个最终用户工作簿中可以找到这些相同的工作表。这些表中的表由工作簿中单元格公式中的结构化引用使用。
目标:我想要另一个只包含表格的工作簿(主工作簿)。将手动对主工作簿进行更新,即添加行,删除行,编辑行,添加列,删除列,编辑列。 使用主工作簿完成更新后,更新的[master]工作表将被放入各种用户工作簿中,替换现有工作表,从而替换表(使用VBA)...而不会破坏结构化引用!没有#REF错误!嗯,这是我想象的,但是,它不一定是这个。此外,常见的表格必须在最终用户工作簿中,无需外部参考!除非它是我需要工作的过程的一部分,当然: - )
我对VBA非常方便,但不是MVP。假设所有工作簿(最终用户和主服务器)都存在于同一目录中。主工作簿将包含将更新的工作表传递给最终用户工作簿的代码。 Excel 2007& 2010年在Windows 7环境中。
我没有任何代码,因为我试图先手动弄清楚它而不会破坏任何东西。建议欢迎!谢谢。
[更新13Jun2012] 希望这个更长篇大论的解释会有所帮助。
我在做什么: 我有一个工作簿(基本上)将自己复制到最终用户工作簿(基于用户表单输入1到n次)。最终用户工作簿受到保护,以防止最终用户在某些公式中出错(各种形式的工作表/单元格保护)。有些表包含表,这些表对所有用户都是相同的。这些表用于数据验证(例如,Allow:List; Source:= timing_droplist)和VLOOKUPs(例如,= VLOOKUP($ W8,Timing_table,FE $ 5 + 1,FALSE))。这些最终用户工作簿每年创建一次,但在一年中更新三次(它们用于财务/预算)。表格可以随时更新。由于数据已添加到最终用户工作簿中,因此无法使用更新的表重新生成这些工作簿,然后让最终用户重新输入所有数据。因此,如果现有的最终用户工作簿可以将所有公共表一起更新(使用VBA),那就更好了。
发生了什么(只有一个例子): “Timing”表存在并包含表“Timing_table”。如果主“Timing”工作表添加到工作簿,Excel将其重命名为“Timing(2)”。这个是正常的。但是添加的工作表中的表变为本地而不是全球并且它也被重命名,例如,“Timing_table12”。我不知道Excel如何提供表名的数字,他们可能会改变。如果我删除旧的“Timing”表,那么所有对它的引用都会被破坏(当然) - 拉起名称管理器显示#REF!在值列中。重命名新引用不能解决问题,因为新引用是新工作表的本地引用。
我尝试手动剪切并将表粘贴到另一个表中,粘贴为Text,并且不保留公式(基本上它执行粘贴为值操作),并且总体上不起作用。只是寻找选择。对这些表的外部引用不是一种选择。
答案 0 :(得分:1)
我认为这个帖子可能会帮助你:http://www.ozgrid.com/forum/showthread.php?t=66791
直接为您提供答复(假设问题主要涉及外部参考): Aaron Blood回复: Re:将公式复制到没有路径的新工作表
您已经开发了代码来复制/粘贴到新工作表和工作簿。现在您需要做的就是扫描新工作表的公式并从公式中删除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
答案 1 :(得分:0)
使用广泛的外部参考只是在这个项目中没有用,所以我说服了项目经理我们需要改变路线。她同意,除了影响工作簿的生成和稳定性之外,她想要的东西太多,无法提出要求并且需要花费太多时间来实施。我最终通过命令按钮将数据拉入必要的表格。 Waaaay更容易使用和稳定。