通过自动更新将一个excel工作表中的列镜像到其他多个excel工作表

通过自动更新将一个excel工作表中的列镜像到其他多个excel工作表,excel,vba,mirror,worksheet,Excel,Vba,Mirror,Worksheet,我有一个excel工作簿,其中包含多张工作表。为了回答此问题,图纸被命名为Sheet1、Sheet2、Sheet3等。我希望将sheet1中的A列复制到其他工作表中,当新单元格添加到sheet1中的A列时,它们将自动输入工作簿中的其他工作表中。我不希望为此设置一个“结束范围;即:10万”。例如,如果我在Sheet1的单元格A1中输入First,则单词“First”现在也应出现在Sheet2的单元格A1中。我使用了以下代码,但它似乎不起作用。任何帮助都将不胜感激 Private Sub Works

我有一个excel工作簿,其中包含多张工作表。为了回答此问题,图纸被命名为Sheet1、Sheet2、Sheet3等。我希望将sheet1中的A列复制到其他工作表中,当新单元格添加到sheet1中的A列时,它们将自动输入工作簿中的其他工作表中。我不希望为此设置一个“结束范围;即:10万”。例如,如果我在Sheet1的单元格A1中输入First,则单词“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

更新

对于外观整洁的非VBA解决方案,您可以使用其他人提到的公式引用,但按如下方式输入

在Sheet2单元格A1=
中,如果(Sheet1!A1=“”,”,Sheet1!A1)
这样,如果Sheet1有一行没有数据,则可以填写整个列A,而不会出现“0”弹出窗口

我想您已经有了大致的想法,但我怀疑您可能没有将代码放在正确的位置

对于VBA解决方案:

首先,您不需要从
工作表\u Change
事件调用sub(当然,除非您出于其他原因希望使用此sub并将变量传递给它。其次,如果您将此代码放置在“Sheet1”的VBE中的工作表对象中,它将按照您的意愿执行:

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

更新

对于外观整洁的非VBA解决方案,您可以使用其他人提到的公式引用,但按如下方式输入

在Sheet2单元格A1=
中,如果(Sheet1!A1=“”,”,Sheet1!A1)
这样,如果Sheet1有一行没有数据,则可以填写整个列A,而不会出现“0”弹出窗口

我想您已经有了大致的想法,但我怀疑您可能没有将代码放在正确的位置

对于VBA解决方案:

首先,您不需要从
工作表\u Change
事件调用sub(当然,除非您出于其他原因希望使用此sub并将变量传递给它。其次,如果您将此代码放置在“Sheet1”的VBE中的工作表对象中,它将按照您的意愿执行:

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宏

如果将其放在第2页和第3页的单元格“A1”中:

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

您熟悉“自动填充”这个术语吗

如果您不明白我刚才说的任何内容,您只想运行一个宏,然后运行此命令并开始键入:

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

祝你好运。

这是excel的一个非常基本的用法。你可以将单元格设置为彼此相等。你根本不需要VBA宏

如果将其放在第2页和第3页的单元格“A1”中:

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

您熟悉“自动填充”这个术语吗

如果您不明白我刚才说的任何内容,您只想运行一个宏,然后运行此命令并开始键入:

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

祝您好运。

您能否通过将后续工作表中的值(以列A为例)设置为
“=Sheet1!A1”
并将该公式复制到足够多的行和列中来实现这一点?您没有传递目标参数(或Sh参数)转到UpdatefromSheet。通过将后续工作表中的值(以列A为例)设置为
“=Sheet1!A1”
,并将该公式向下复制足够数量的行和列,是否可以按公式执行此操作?您没有传递目标参数(或Sh参数)转到UpdatefromSheet。如果源工作表中的行或列-新行未显示在“镜像”工作表中,则自动填充无法正常工作。如果源工作表中的行或列-新行未显示在“镜像”工作表中,则自动填充无法正常工作。