首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA复制工作表公式引用原始工作表

是指在Excel中使用VBA编程语言复制一个工作表,并且在复制后的工作表中保留原始工作表中的公式,并且这些公式仍然引用原始工作表中的数据。

在VBA中,可以使用Worksheet对象的Copy方法来复制工作表。复制工作表后,需要遍历复制后的工作表中的所有单元格,检查每个单元格中的公式,并将其中的引用修改为指向原始工作表。

以下是一个示例代码,演示如何在VBA中实现复制工作表并保留公式引用原始工作表:

代码语言:txt
复制
Sub CopyWorksheetWithFormulas()
    Dim originalSheet As Worksheet
    Dim copiedSheet As Worksheet
    Dim cell As Range
    
    ' 获取原始工作表
    Set originalSheet = ThisWorkbook.Worksheets("原始工作表")
    
    ' 复制工作表
    originalSheet.Copy After:=originalSheet
    
    ' 获取复制后的工作表
    Set copiedSheet = ThisWorkbook.ActiveSheet
    
    ' 遍历复制后的工作表中的所有单元格
    For Each cell In copiedSheet.UsedRange.Cells
        ' 检查单元格是否包含公式
        If cell.HasFormula Then
            ' 修改公式中的引用,将其指向原始工作表
            cell.Formula = Replace(cell.Formula, originalSheet.Name, copiedSheet.Name)
        End If
    Next cell
    
    ' 清除剪贴板中的内容
    Application.CutCopyMode = False
    
    ' 提示复制完成
    MsgBox "工作表复制完成,并且公式引用了原始工作表。"
End Sub

这段代码首先获取名为"原始工作表"的工作表对象,然后使用Copy方法将其复制到原始工作表后面。接下来,遍历复制后的工作表中的所有单元格,检查每个单元格是否包含公式。如果包含公式,则使用Replace函数将公式中的原始工作表名称替换为复制后的工作表名称。最后,清除剪贴板中的内容,并弹出一个消息框提示复制完成。

这种方法可以确保复制后的工作表中的公式仍然引用原始工作表中的数据,从而保持公式的正确性。这在需要创建多个相似工作表,并且这些工作表需要引用相同数据源的情况下非常有用。

腾讯云提供了一系列云计算产品,其中包括云服务器、云数据库、云存储等。这些产品可以帮助用户在云端部署和管理应用程序,提供高可用性、弹性扩展和安全性。对于Excel中的VBA编程,腾讯云的产品并不直接提供相关解决方案。然而,腾讯云的云服务器和云存储等产品可以作为支持VBA编程的环境,用于存储和执行VBA代码。用户可以根据自己的需求选择适合的腾讯云产品来支持VBA编程的工作。

更多关于腾讯云产品的信息和介绍,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA技巧:复制多个工作

标签:VBA 有时候,我们想要批量复制多个工作到新的工作簿,可以使用VBA代码来实现。...例如,工作簿中有三个工作,其名称分别为:Data、完美Excel和Output,要将这三个工作一次复制到一个新的工作簿中并保存,示例代码如下: Sub CopyMultiSheet() Application.ScreenUpdating...= True End Sub 代码很简单,关键就是下面这句代码: Sheets(Array("Data", "完美Excel", "Output")).Copy 这里Sheets对象的Copy方法在复制工作的同时...,会生成一个新工作簿,而Array方法会将工作组合到一起,就像我们在工作簿中按Ctrl键的同时选择工作标签一样。...有兴趣的朋友可以自己创建一个工作簿,按代码中的名称命名工作,然后将上述代码复制到VBE标准模块中,运行代码试试看,这样就会对代码的作用有更深的理解。

2.4K20

Excel-VBA复制工作到新工作簿方法

工作中我们常常会在一个工作簿的一个工作中输入数据,再另存为一个新的工作簿。 如:在文件“自动工具.xlsx”中有一个工作为“模板”。...我想在“模板”工作中输入数据,再另存为一个新的文件为“小龙女.xlsx” 【知识点】 下面是本个收藏的代码,三种方法,以备用 【代码】 '方法一:复制工作另存为新的工作簿 Sub copySaveAs...ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\小龙女.xlsx" ActiveWorkbook.Close SaveChanges:=True End Sub '方法二:复制工作为新的工作...,写入数据,再移动工作另存为新的工作簿 Sub MoveSaveAs() wsh_num = Worksheets.Count Worksheets("模板").Copy After:...,再复制工作到新工作簿中 Sub AddCopySaveAs() Path = ThisWorkbook.Path & "\" Set newwb = Workbooks.Add

10.8K40
  • VBA程序:列出指定工作中的所有公式

    标签:VBA 下面的VBA过程在指定的新工作中列出指定工作中的所有公式,包含具体的公式、所在工作名称及其所在单元格地址。...rSheet As Worksheet Dim myRng As Range Dim newRng As Range Dim c As Range Dim endRow As Long '放置公式工作..., 可修改为你的实际工作名 Set rSheet = Sheets("FormulasSheet") '要查找公式工作, 可修改为你的实际工作名 Set sht = Sheets("Sheet1..." & endRow).Value = Mid(c.Formula, 2, (Len(c.Formula))) '放置包含公式工作名在列B中 .Range("B" & endRow..., "") End With Next c On Error GoTo 0 '自动调整列宽 rSheet.Columns("A:C").AutoFit End Sub 注意,程序假设放置公式工作第一行是标题行

    19410

    使用VBA合并工作

    标签:VBA 从多个Excel工作(子工作)中获取信息,并用子工作中的所有数据填充汇总工作(父工作),这是很多朋友会提到的常见要求。...如果部分数据是从添加新工作工作簿中而增长的,那么获得这些数据的汇总非常方便,例如,添加单独的工作,包含新月份的数据。...将新工作信息添加到汇总工作的一种非常快速的方法是遍历工作簿中的所有工作,使用VBA合并数据。...图1 工作中的结构如下图2所示。 图2 数据必须从所有子表输入到上图2中的绿色区域。 这里的技巧是过程运行时排除汇总表,以便仅将子表或原始数据复制到汇总表中。...上面的过程首先将清除Summary工作,但标题保持不变,以便将新数据粘贴到该工作中。 此外,还可以将多个工作中的数据复制到Summary工作中某个单元格区域的底部。

    1.9K30

    撤销VBA工作的操作

    excelperfect 标签:VBA 当执行VBA过程代码后,如果想反悔,像在Excel中操作一样,使用Excel的撤销功能或者按Ctrl+Z来撤销VBA代码对工作的改变,不会起作用。...这里,在jkp-ads.com中找到了代码,可以用来撤销VBA工作的操作。代码中,关键是两个类模块,创建了一个通用撤消处理程序,可以将其导入到任何项目。...这里的程序可以撤消的操作通常仅限于对对象属性的更改,无法撤消插入或删除工作、刷新查询、更新数据透视等操作。...有兴趣的朋友可以查看: https://jkp-ads.com/articles/undowithvba00.asp 研阅原文并下载示例工作簿。...或者,在完美Excel微信公众号中发送消息: 撤销代码操作 获取原示例工作簿的下载链接。 或者,直接到知识星球App完美Excel社群中下载原示例工作簿。

    24710

    VBA实战技巧29:从一个工作复制数据到另一个工作

    今天演示一个简单的例子,也是经常看到网友问的问题,将一个工作中的数据复制到另一个工作。 如下图1所示,有3个工作,需要将工作“新数据#1”和“新数据#2”中的数据复制工作“汇总”中。...其中,在“汇总”工作中已经有部分数据。 ? 图1 工作“新数据#1”中的数据如下图2所示。 ? 图2 工作“新数据#2”中的数据如下图3所示。 ?...这段代码很直观,基本上根据三个工作的特点,采用了“硬编码”,可以根据具体工作的情况对上述代码进行修改。当然,也可以优化代码,使其具有通用性。 运行代码后,结果如下图4所示。 ? 图4

    24.6K31

    VBA基础:复制格式、选取单元格及复制工作的示例代码

    标签:VBA 将某工作中的格式转换到另一个工作 示例代码: Sub TransferFormat() '源格式工作 Dim sht1 As Worksheet '要应用格式的工作 Dim...sht2 As Worksheet Set sht1 = ThisWorkbook.Worksheets("Sheet1") sht1.Cells.Copy '创建新工作 Set sht2...'首先粘贴值 sht2.Cells.PasteSpecial xlPasteValues '然后粘贴格式 sht2.Cells.PasteSpecial xlPasteFormats '给新工作命名...例如,选择当前工作表单元格D5: ActiveSheet.Cells(5, 4).Select 或者: ActiveSheet.Range("D5”).Select 选择另一个工作中的单元格E6: Application.Goto...: Sheets("Sheet2").Activate ActiveSheet.Cells(6, 5).Select 选择当前工作中的单元格区域C2:D10: ActiveSheet.Range(Cells

    30100

    VBA小技巧:确定工作数据区域

    在使用VBA编写程序时,有几种常用方法可以在工作中查找包含已有数据的区域,但这些方法都多少存在一些局限。...下面的代码是“万无一失”的,它返回位于最大行和最大列(如果是全新的工作,则为 A1)相交叉处的单元格。在复制、遍历或清除数据时,使用此函数将确保不会遗漏任何内容。...'查找工作中最后使用的单元格 Function LastUsedCell(wksToUse As Worksheet) As Range Dim dblRow As Double Dim...,因为默认值是相关工作的单元格 A1(决不为空)。...这样做的原因是需要一些可靠的东西,不管数据的形状如何,不管Excel的各种变化,也不管工作是否受到保护,都可以使用。 注:本程序来源于mrexcel.com,供学习参考。

    1.2K20

    使用VBA基于列表移动工作

    标签:VBA 问题:工作簿中有一个汇总(Summary)工作,它需要计算开始(Begin)工作和结束(End)工作之间的所有工作中的数据,如下图1所示。...图1 然而,在开始(Begin)工作和结束(End)工作之间的工作是根据列表中的选择来确定的。...如下图2所示,列表中只选择了QLD、TAS、WA、NSW、VIC五个工作,因此只计算这五个工作的汇总。...图2 但是,列表中的选择变化后,想要根据列表中选择内容将相应的工作灵活地移入或移出Begin工作和End工作之间,如下图3所示。 图3 可以使用VBA来实现。...也就是说,首先在列表中选择要进行汇总的工作,然后单击“Move”按钮,这些选择的工作就会自动调整到开始(Begin)工作和结束(End)工作之间,并自动更新Summary工作

    92430

    Excel小技巧31:引用工作工作簿

    excelperfect 在使用公式时,我们可以引用不同工作甚至是不同工作簿中的单元格或单元格区域。其一般语法是: =工作名!单元格区域 或者: =[工作簿名]工作名!...单元格区域 例如,如果当前单元格在工作Sheet1,则下面的公式: =Sheet3!B2+Sheet5!B2 将工作Sheet3和工作Sheet5中单元格B2的值相加。...如果要引用工作名包含一个或多个空格,则需要在工作名前后加上单引号。例如,要引用工作“My Sheet”中的单元格A2,可使用公式: ='MySheet'!...A1+2 也可以引用不同工作簿中的单元格,例如下面的公式: =[test.xlsx]Sheet1!A1+5 引用工作簿test.xlsx中工作Sheet1的单元格A1。...A1+5 好习惯:如果要引用其他工作工作簿,无论其名称中是否包含空格,都在引用工作工作簿名前后添加单引号,以确保万无一失。

    1.7K20

    VBA实例一、工作簿按拆分成多个工作簿

    大家好,本节主要介绍,通过VBA程序,将单个工作簿中的多个工作,按拆分成多个独立工作簿。...效 果 演 示 一个工作簿中有多个工作,将每个工作拆分成独立的工作簿,生成的工作簿名称为原工作名称,保存至原文件路径下,演示效果如下: V B A 代 码 思路是通过for each循环,将该工作簿中的每个表格对象赋值给...sht变量,在循环中复制sht变量,将其另存为工作簿文件。...保存至原工作簿的路径下,工作簿的名称为原工作的名称,另存完毕后关闭,最后msgbox弹窗提示完成。 为了提高代码效率,关闭屏幕更新。...代码如下: Sub 拆分工作() '定义变量并赋值 Dim Sht As Worksheet Dim MyBook As Workbook Set MyBook = ThisWorkbook '关闭屏幕更新

    3.6K30

    python合并工作 VS excel合并工作,看看合并工作哪家强!

    在日常办公工作中,我们可能会碰到多个或者几百上千个数据结构都相同 sheet工作需要你进行合并汇总。而excel和python都能进行工作的合并,那你知道他们两个的操作谁更为好用的吗?...今天就分别介绍excel和python合并工作的方法,看看合并工作那家强! 模拟数据:同一个 Excel 工作簿中有 3 个 工作,其中数据结构都相同: ?...在弹出的【追加】窗口中:①选择【三个或更多表】→②在【可用】中,把【需要合并的工作】添加至【要追加的】中→③调整【工作顺序】→④点击【确定】。 ?...python合并工作 python合并excel工作有挺多种的,这里只介绍一种最简单,也不复杂的,包括导入模块一共四行代码。...导入pandas模块: import pandas as pd 导入需要合并的工作,sheet_name=None时是返回工作簿中的全部工作,如果需要指定工作时可更改为工作名称。

    1.6K20

    Excel公式技巧14: 在主工作中汇总多个工作中满足条件的值

    本文提供了一种方法,在给定一个或多个相同布局的工作的情况下,可以创建另一个“主”工作,该工作仅由满足特定条件的所有工作中的数据组成。并且,这里不使用VBA,仅使用公式。...假设我们想从下面三个工作中整理数据: 工作Sheet1: ? 图1 工作Sheet2: ? 图2 工作Sheet3: ?...D2:D10"),"Y")) 如果不熟悉跨多个工作使用公式的技术,那么应记下使用INDIRECT的这种公式构造,因为它实际上是我们执行此类计算的唯一方法。...),结果转换为: MATCH(TRUE,{3;5;6}>=4,0) 得到2,这样将引用工作Sheet2。...实际上,该技术的核心为:通过生成动态汇总小计数量的数组,该小计数量由来自每个工作中符合条件(即在列D中的值为“Y”)的行数组成,然后将公式所在单元格相对行数与该数组相比较,以便有效地确定公式所在行中要指定的工作

    9K21
    领券