根据唯一 ID 匹配将数据传输到外部 excel 数据库 sheet

Transfer data into an external excel database sheet, based on unique ID match

美好的一天, 我对 excel VBA 变量知之甚少,并且一直在努力使这个工作好几天。 我已将“Workbook2.xlsm”指定为中央数据库文件。它包含A列中的所有个人员工ID(从A2列开始,A1是table header)。 通过另一个“Workbook1.xlsm”中的输入部分,我试图用 VBA 触发以打开工作簿 2/Sheet1,将工作簿 1 中单元格 A2 中输入的个人 ID 与列中的 ID 列表相匹配A 在工作簿 2 中,将工作簿 1 中的培训类型、开始和结束日期复制到工作表 2 中相应 ID 的旁边,然后关闭并保存工作表 2。

Data entry Worksheet 1

Worksheet 2 Database to search ID and paste assignment, on and off from Worksheet 1

提前感谢您的想法。

我创建了类似的工作簿,它基本上使用一个 sheet 来更新另一个 sheet。下面的代码基于一个工作簿。您可以通过在sheet之前添加工作簿名称来修改这两个工作簿,关闭屏幕更新,打开工作簿2,分配值,保存工作簿2,打开屏幕更新。

我建议创建一个 table,以便在添加新员工“TblData”时范围会自动动态变化。您也可以使用命名范围来执行此操作,但根据我的经验,这有点麻烦。通过更多的编码,您可以选择添加员工。将您的按钮命名为“AssignTrainBtn”。此代码位于分配给 AssignTrainBtn

的单击操作的 ManageAssignment sheet 对象中
Private Sub AssignTrainBtn_Click()
Dim formSheet As Worksheet
Dim dataSheet As Worksheet
Dim nextRow As Integer
Dim IDCol As Range
    
Set formSheet = Sheets("ManageAssignments")
Set dataSheet = Sheets("TempAssignments")
Set IDCol = dataSheet.Range("TblData[ID]")
     
ID = Range("a2")
    
    If ID <> vbNullString Then
    
    Set Rng = IDCol.Find(what:=ID, _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        SearchOrder:=xlByRows, _
        MatchCase:=False)
        
    If Not Rng Is Nothing Then
    
        nextRow = Rng.Row
    
        Else
        MsgBox ("employee not found")
Exit Sub
    
    End If
        
    dataSheet.Cells(nextRow, 2).Value = formSheet.Range("b2").Value
    dataSheet.Cells(nextRow, 3).Value = formSheet.Range("c2").Value
    dataSheet.Cells(nextRow, 4).Value = formSheet.Range("d2").Value
    
    End If
End Sub