将一个Excel表格中的列镜像到其他多个Excel表格中,并自动更新

我有一个Excel工作簿,其中包含多个工作表。 为了这个问题,这些图纸被命名为Sheet1,Sheet2,Sheet3等等。 我希望将Sheet1中的Column A复制到其余的表单中,并且当新单元格添加到Sheet1中的A列时,它们将自动input到工作簿中的其他表单中。 我宁愿不要有一套“结束范围,即:A100000”。 例如,如果我在Sheet1的单元格A1中inputFirst,则单词“First”现在也应出现在Sheet2的单元格A1中。 我已经使用了下面的代码,它似乎不工作。 任何帮助将不胜感激。

Private Sub Worksheet_Change(ByVal Target As Range) Call UpdateFromSheet1 End Sub Sub UpdateFromSheet1(ByVal Sh As Object, ByVal Target As Range) If Sh.CodeName = "Sheet1" Then If Not Intersect(Target(1, 1), Range("A1:A1000")) Is Nothing Then Sh.Range("A1:A1000").Copy Sheet2.Range("A1") End If End If End Sub 

UPDATE

对于一个干净的非VBA解决scheme,您可以使用其他人提到的公式引用,但是像这样input。

在Sheet2中单元格A1 = If(Sheet1!A1="","",Sheet1!A1)这样,如果Sheet1有一个没有数据的行,那么您可以填写整个列A并且不会popup“0”。

我认为你有一般的想法,但我怀疑你可能没有把你的代码放在正确的地方。

对于VBA解决scheme:

首先 ,你不需要从Worksheet_Change事件中调用子程序(除非你想使用这个子程序,并将variables传递给它); 第二 ,如果你把这个代码放在工作表对象的VBE中的“ Sheet1“,它会做你想要的:

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns("A")) Is Nothing Then Dim wks As Worksheet For Each wks In Sheets(Array("Sheet2", "Sheet3")) Target.EntireColumn.Copy wks.Columns(1) Next End If End Sub 

这是excel的一个非常基本的用法。 你可以设置单元格相等。 你绝不会需要一个VBA的macros。

如果你把它放在Sheet2和Sheet3的单元格“A1”上:

 =Sheet1!A1 

然后,当您在A1中input内容时,它将在第2页和第3页上“镜像”。您可以将其自动填充到第2页和第3页上列A中的所有单元格。

你熟悉术语“ 自动填充”吗?

如果你不明白我刚才说的话,你只想运行一个macros然后运行这个macros并开始input:

 Sub MacroBasicQuestion() Dim wbk As Workbook Set wbk = ThisWorkbook Dim ws1 As Worksheet Dim ws2 As Worksheet Dim ws3 As Worksheet Set ws1 = wbk.Sheets(1) Set ws2 = wbk.Sheets(2) Set ws3 = wbk.Sheets(3) Dim cell As Range Set cell = ws2.Range("A1:A1") ws2.Select cell.FormulaR1C1 = "=Sheet1!RC" cell.Select Selection.AutoFill Destination:=Range("A:A"), Type:=xlFillDefault Set cell = ws3.Range("A1:A1") ws3.Select cell.FormulaR1C1 = "=Sheet1!RC" cell.Select Selection.AutoFill Destination:=Range("A:A"), Type:=xlFillDefault End Sub 

祝你好运。