EXCEL有两个一样的SHEET,如何能在sheet1中 输入sheet2的某条数据的ID(索引),直接把该数据全部拿过来

2025-05-23 15:28:38
推荐回答(4个)
回答1:

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已存在,就会把数据复制到当前行

回答2:

给你个附件

在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

这只是个示例,实际要用的话还需要修改很多

回答3:

你是程序员,那应该比较简单了。
用VBA在输入的工作表B的worksheet_change里编一段程序就行了,监控ID这一列的变化,然后到后面那个表A里去查出数据更新,最后删掉后面那个表A的记录、存盘

回答4:

例如,在 Sheet1 某单元格输入 =Sheet2!A