如何将具有多个公式的单元格范围移动到另一个工作表

我有一个从小的Excel表,越来越大的Excel表。

左半部分是数据的表格区域。 右边有一堆计算单元格(总计,总和,不同的分析… – 这变得相当复杂…)

当我滚动到我的表格列表的底部添加新的行,我不能再看到计算区域 – 糟糕的devise…

我不知道一个办法来冻结右半…

所以我试图把右半部分复制到另一张纸上。 现在的问题是:

所有公式最初没有表格名称参考input。

有没有办法将一个单元格的范围从一个工作表移动到另一个工作表,并保持指向没有移动的单元格的所有公式仍然从原始工作表读取(添加工作表引用)?

如果您select要冻结的区域左下angular的单元格,并select“冻结窗格”,则冻结窗格应该可以工作。 如果您仍然需要在右侧部分滚动,则分割(“冻结窗格”右侧的button)应起作用。 另一个选项可能是引用新工作表中的单元格,并将公式保留在原始工作表中(例如,在新工作表中的A1 = OriginalWorksheet!A1 )。 没有在公式中引用的工作表,我不相信有一种方法来移动公式,并保留原始工作表参考。

如果我理解你的问题是正确的:

您可以使用您的公式剪切该区域,并将其粘贴到新工作表中的相同区域。 然后复制新工作表中的公式并将其粘贴回原始区域。 完成。

之后,您可以删除新工作表中的行/列,以获得您的公式在右上angular。

编辑:添加图表名称引用以下OP请求的公式
在超级用户的正则expression式从这个答案
在MSDN上从这里引用的replace模式

您将需要在“工具”>“引用”中添加“Microsoft VBScript正则expression式5.5”的引用

这里使用的正则expression式的工作示例
如果它们存在,这将在你的代码的其他地方选取数字和字母序列,尽pipe这里可能需要一些理智的检查。


范围需要是相同的大小。 我保持它非常基本,因为你没有提供任何代码工作。

 Dim rng1 as Range, rng2 as Range Dim x as long, y as long, r as long, c as long Dim RegEx As Object Set RegEx = CreateObject("VBScript.RegExp") On Error Resume Next RegEx.Global = True RegEx.Pattern = "\b[AZ]{1,3}[0-9]{1,4}\b" set rng1 = Workbooks("BookName").Worksheets("SheetName1").Range("A1:B2") 'target cells set rng2 = Workbooks("BookName").Worksheets("SheetName2").Range("AA1:AB2") 'contains the formula r = rng.rows.count c = rng.columns.count For x = 1 to r For y = 1 to c rng2.Cells(x, y).formula = RegEx.Replace(rng1.Cells(x, y).formula,"SheetName2$&") Next y Next x On Error GoTo 0 

写在psuedo所以这是未经testing,但应该工作。 强制公式被作为一个string处理,以确保它不是自动更新,但如果错误只是删除循环中的"" &