繁体   English   中英

Excel 如果单元格值更新/更改,则将某些单元格值复制到另一个单元格/工作表

[英]Excel copy certain cell value to another cell/worksheet if cell value updated/changed

我尝试创建一个每天更新的项目管理数据库。

到目前为止,我所做的工作是,如果 Sheet1 单元格 A1 中的值更新,则单元格 A1 中的先前值将被复制到 Sheet2 C1。 如果我再次更新 Sheet1 单元格 A1 中的值,它将再次复制到 Sheet2 C2,在前一个副本下方,依此类推。

我想对下一个单元格应用相同的代码,例如,如果 Sheet1 A2 值更新,它将被复制到 Sheet2 D1,如果 Sheet1 A2 值再次更改,它将被复制到上一个副本(Sheet2 D2)的下方。

所以我的问题是,有没有办法简化输入单元格 A1、A2、A3.. 和 output 单元格 C1、D1、E1.. 的代码,因为我知道复制粘贴和更改目标和目标地址不起作用。 下面是我的代码,只能用于 Sheet1 目标单元格 A1。 我是 VBA 的新手,所以任何回应都会非常棒。

Private Sub worksheet_change(ByVal target As Range)
    If target.Address = Range("A1").Address Then
        Dim intLastRow As Long
        intLastRow = Sheet2.Cells(Sheet1.Rows.Count, "C").End(xlUp).Row
     
        Sheet2.Cells(intLastRow + 1, "C") = target.Value
    End If
End Sub

测试更改是否发生在第 1 行,然后获取列并使用它而不是硬编码的“C”。


Private Sub worksheet_change(ByVal target As Range)
    If target.Row = 1 Then
        Dim col As Long
        Dim intlastrow As Long
        
        col = target.Column + 2 'Column to modify
        intlastrow = Sheet2.Cells(Rows.Count, col).End(xlUp).Row
        If intlastrow = 1 Then 'Populate Row 1 or increment
            If Sheet2.Cells(intlastrow, col).Value <> "" Then
                intlastrow = intlastrow + 1
            End If
        else
            intlastrow = intlastrow + 1
        End If
        Sheet2.Cells(intlastrow, col) = target.Value
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM