首页 > 解决方案 > VBA:将一个单元格镜像到另一个工作表,然后在删除原始数据后保留数据

问题描述

抱歉,如果这个问题已经得到解答,但我之前找不到任何关于这个问题的细节。我知道这是一个没有代码的模糊问题,但只是在寻找如何解决这个问题的想法。在 Excel 上编写 VBA 代码。

我有一张表,其中包含 20 多列和 8,000 多行数据。该表受密码保护/只读,因为我不希望用户编辑数据(该表链接到其他几个宏)。称为“主数据表”。

我创建了一个宏,它将过滤主数据表,然后将过滤后的结果粘贴到另一张表(称为“过滤结果”)上,并将数据与另一张单独的表合并。用户可以查看和编辑此工作表。

但是,有两列我希望用户放入需要在主数据表(在这些特定列中)自动复制/镜像的数据。我遇到的问题是“过滤结果”表在一段时间后被删除,但我仍然需要这些特定列的用户输入数据位于主数据表中。

我不确定如何解决工作表被删除但数据被保留的问题。

我的另一种解决方法是复制/粘贴按钮,用户可以单击以将未格式化的数据从过滤表复制到主数据表。但是,我希望找到一个解决方案,它会在用户键入时自动更新(以防他们忘记单击按钮等)

感谢所有的帮助!

编辑:我现在正在使用的代码。尽管如此,仍然坚持链接过滤的单元格。

Private Sub Worksheet_Change(ByVal Target As Range)

  Application.EnableEvents=False

    If Not Intersect (Target, Range("D1:D1000")) Is Nothing Then
          Target.Copy Destination:=Worksheets("Master Data 
          File").Range(Target.Address)
    End If

  Application.EnableEvents=True

End Sub

标签: vbaexcel

解决方案


您可以使用该Worksheet_Change事件来检查特定范围是否已更改,然后复制/更新另一张表。这样,当原始数据更改时,您可以自动复制/粘贴。

示例:
如果您想在其值更改时将范围 A1:A5 复制到另一个工作表中:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A5")) Is Nothing Then 'range A1:A5 was changed
        Target.Copy Destination:=Worksheets("OtherSheet").Range(Target.Address)
    End If
End Sub

推荐阅读