Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
x = Worksheets.Count
For Each r In Target
If r.Column = 1 And r <> "" Then
For i = 1 To x
If Sheets(i).Name <> Sh.Name Then
For j = 1 To Sheets(i).[a65536].End(3).Row
If Sheets(i).Cells(j, 1) = r Then
Sheets(i).Rows(j).Cut
r.Select
ActiveSheet.Paste
GoTo xxxx
End If
Next
End If
Next
End If
xxxx:
Next
Target.Select
Application.EnableEvents = True
End Sub
打开VBE,将上面代码考入thisworkbook,假设你的ID在a列,在任意sheet的a列输入ID,如果这个ID在其他sheet已存在,就会把数据复制到当前行
给你个附件
在sheet2中A列输入sheet1中存在的ID会自动将sheet1中该ID所在行复制至该行,并删除原数据
一次只能输入一个
代码如下
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As String
Dim r As Integer
Dim rb As Integer
If Target.Column = 1 And Target.Count = 1 Then
X = Target.Value
r = Sheets("sheet1").Range("a:a").Find(X).Row
rb = Target.Row
Sheets("sheet1").Rows(r).Copy Sheets("sheet2").Rows(rb)
Sheets("sheet1").Rows(r).Delete
End If
End Sub
这只是个示例,实际要用的话还需要修改很多
你是程序员,那应该比较简单了。
用VBA在输入的工作表B的worksheet_change里编一段程序就行了,监控ID这一列的变化,然后到后面那个表A里去查出数据更新,最后删掉后面那个表A的记录、存盘
例如,在 Sheet1 某单元格输入 =Sheet2!A