将excel的整个列复制到另一个列取决于单元格值的更改

时间:2017-08-24 12:15:43

标签: excel vba excel-vba excel-formula excel-2010

我的要求是每当我的主工作簿(main.xlsm)sheet1" A1"我需要将整行数据复制到另一个excel(比如working.xlsm)。主表具有从A到M的列,并且应该发生数据捕获取决于A1单元数据的变化。所有数据都保存在第二个excel中,所有新数据都将添加到下一行。

我已将下面的代码添加到我的第二个工作簿(working.xlsm)中,我需要保存所有数据,但它无法正常工作。我不确定如何使用with函数

的范围
Private Sub Worksheet_Calculate()

With Sheet1
    With .Cells(.Rows.Count, "B").End(xlUp)
        If .Value <> Workbooks("main.xlsm").Worksheets("Sheet1").Range("A1").Val‌ue  Then
            .Offset(1).Value = Sheet1.Range("A:M").Value
        End If
    End With
End With

End Sub

1 个答案:

答案 0 :(得分:1)

如果将此代码放在main.xlsm的工作表中,只要工作表的A1发生更改,就将main.xlsm的A1:M1复制到working.xlsm的Sheet1的第一个空白行。这假设working.xlsm当前也是打开的,供参考。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = Workbooks("working").Sheets("Sheet1")
If Not Intersect(Target, Range("A1")) Is Nothing Then 
    Range("A1:M1").Copy 
    ws.Range("A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial xlPasteValues
End If
End Sub

这是你在找什么?