Excel VBA-如果单元格与列中的某个值匹配,则在相邻列中插入数据

时间:2018-10-09 16:25:43

标签: excel vba excel-vba

因此,我在工作表EmployeeForm中有两个表单(EmployeeForm1和EmployeeForm2),在工作表TableEmployee中有一个Excel表EmployeeData,看起来像这样: enter image description here

表中的数据来自这两种形式的提交,但是到目前为止,我仅成功输入了表的前半部分。

Employee Form 2中的数据仅在Employee Form 1提交后才可以提交(可能要几天甚至几周之后才能提交)。

现在我要实现的是拥有一个可以正常工作的VBA代码,该代码可以正确匹配D13单元格中的Employee ID与H列中的Employee ID,并将D14:D17中的数据记录到正确的位置地点。

因此在上面的示例中,由于Employee ID为145,所以一旦我单击Form 2中的Submit按钮,D14:D17中的数据应存储在L7:O7中。

到目前为止,这是我的代码:

Sub Submit_Form1()

   Dim LastRow As Long, ws As Worksheet

   Set ws = Worksheets("EmployeeData")

   LastRow = ws.Range("H" & Rows.Count).End(xlUp).Row + 1

   ws.Range("H" & LastRow).Value = Worksheets("EmployeeForm").Range("D5").Value   'Employee ID
   ws.Range("I" & LastRow).Value = Worksheets("EmployeeForm").Range("D6").Value   'Employee Name
   ws.Range("J" & LastRow).Value = Worksheets("EmployeeForm").Range("D7").Value  'Place of Birth
   ws.Range("K" & LastRow).Value = Worksheets("EmployeeForm").Range("D8").Value  'Working Experience


 End Sub

对于表格2

Sub Submit_Form2()

    Dim LastRow As Long, ws As Worksheet
    Dim H As String

   Set ws = Worksheets("EmployeeData")
    employeeid = Sheets("EmployeeForm").Range("D13").Value

    If Cells(H) = employeeid Then

     ws.Range("L" & LastRow).Value = Worksheets("EmployeeForm").Range("D14").Value   'Education
     ws.Range("M" & LastRow).Value = Worksheets("EmployeeForm").Range("D15").Value   'Last Company
    ws.Range("N" & LastRow).Value = Worksheets("EmployeeForm").Range("D16").Value  'Join Date
    ws.Range("O" & LastRow).Value = Worksheets("EmployeeForm").Range("D17").Value  'Position

 End Sub

当然,第二个宏不起作用,但是有人可以通过正确的方法来启发我吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

你可以试试吗?

Sub Submit_Form2()

Dim ws As Worksheet, v As Variant

Set ws = Worksheets("EmployeeData")
employeeid = Sheets("EmployeeForm").Range("D13").Value

v = Application.Match(employeeid, ws.Range("H:H"), 0)

If IsNumeric(v) Then
    ws.Range("L" & v).Value = Worksheets("EmployeeForm").Range("D14").Value   'Education
    ws.Range("M" & v).Value = Worksheets("EmployeeForm").Range("D15").Value   'Last Company
    ws.Range("N" & v).Value = Worksheets("EmployeeForm").Range("D16").Value  'Join Date
    ws.Range("O" & v).Value = Worksheets("EmployeeForm").Range("D17").Value  'Position
End If

End Sub

您的代码存在问题

If Cells(H) = employeeid Then

这是无效的语法。单元格需要行和列引用,例如单元格(1,1)或单元格(1,“ A”)。更不用说H没有定义。