[英]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.