当单元格值更改时,将单元格值更改的列复制到同一范围内的另一个 sheet

When a cell value changes, copy the column from where the cell value changed to another sheet at the same range

例如,如果在 A:A 范围内只有单元格 A8 更改,则复制 D4:D8 并将其作为值粘贴到 sheet "ADP" 中的同一位置,即D4:D8.

为此,我尝试了以下宏

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.range = "A:A" Then
        Call copy_paste_as_value
    End If
End Sub


Sub copy_paste_as_value()
    Range("d4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

    Sheets("ADP").Activate
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C4").Select
    Application.CutCopyMode = False
End Sub

我只想复制单元格值发生变化的数据,但它会将整个 table 复制到另一个 sheet。

我的主要问题是找出更改了哪个单元格,并仅从更改了单元格值的列中复制数据。

此处,需要注意的是,只有在范围 A:A 发生变化时才应复制数据,如果不需要复制粘贴以外的任何其他单元格发生变化。

我们将不胜感激任何帮助。 谢谢。

假设相对范围一致,试试这个

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Range

If Target.Column = 1 And Target.Row > 4 Then
    Set r = Target.Offset(-4, 3).Resize(5)
    Worksheets("ADP").Range(r.Address).Value = r.Value
End If

End Sub

你可以试试:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim wsSou As Worksheet, wsDes As Worksheet

    'Set the worksheets to avoid conflicts
    Set wsSou = Target.Worksheet
    Set wsDes = ThisWorkbook.Worksheets("ADP")

    If Not Intersect(Target, Range("A:A")) Is Nothing And Target.Count = 1 Then

        wsDes.Range(wsDes.Cells(Target.Row, 4), wsDes.Cells(Target.Row, 9)).Value = wsSou.Range(wsSou.Cells(Target.Row, 4), wsSou.Cells(Target.Row, 9)).Value

    End If

End Sub