首页 文章

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

提问于
浏览
1

我有一个excel工作簿,其中包含多个工作表 . 为了这个问题,工作表被命名为Sheet1,Sheet2,Sheet3等 . 我希望将Sheet1中的A列复制到其余的工作表中,并且当新单元格添加到sheet1中的A列时,它们将自动输入到工作簿中的其他工作表中 . 我宁愿不为此设置“结束范围;即:A100000” . 例如,如果我在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

2 回答

  • 1

    UPDATE

    对于看起来干净的 Non-VBA 解决方案,您可以使用其他人提到的公式引用,但是像这样输入它 .

    在Sheet2单元格A1 = If(Sheet1!A1="","",Sheet1!A1) 这样,如果Sheet1有没有数据的行,那么您可以填充整个A列并且不会弹出"0"弹出窗口 .

    我认为你有一般的想法,但我怀疑你可能没有正确的代码 .

    对于 VBA 解决方案:

    First ,你不需要从 Worksheet_Change 事件中调用sub(除非你当然想要使用这个sub出于其他原因并将变量传递给它. Second ,如果你将这段代码放在"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
    
  • 0

    这是excel的一个非常基本的用途 . 您可以将单元格设置为彼此相等 . 你决不会需要一个VBA宏 .

    如果你把它放在Sheet2和Sheet3上的单元格“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
    

    祝好运 .

相关问题