-1

我是 VB 脚本的新手,所以我需要帮助来执行以下任务。我需要做三件事:

  1. 将工作表 1 的 col A 的值逐行与工作表 2 的 col A 的任何行中的值匹配。
  2. 如果匹配,则必须将该值复制到同一工作簿中新工作表的 col A 中。
  3. 现在工作表 2 的剩余 col 即 col B 和更多将被附加并复制到我们之前复制匹配 col A 值的新工作表。

例如:
Sheet1 数据:

员工姓名 ID 部门
莫汉 1 IT

表 2 数据:

employeeName ID In time Out time
嘉安 2 下午 12:00:00 晚上 10:15:00
磨憨 1 上午 9:02:00 晚上 11:01:00

现在表 3 应该有:

employeeName ID Intime Out time
磨憨 1 上午 9:02:00 晚上 11:01:00

这都在同一个工作簿中,需要使用 VBA 完成。

4

1 回答 1

1

将此代码放在工作簿中的模块中并执行 run() 子程序。这假设您的工作表的代码名称是您所描述的 Sheet1、Sheet2 和 Sheet3。

Sub run()

    Dim row As Integer, sheet2Row As Integer
    row = 2

    With Sheet1
        Do While (.Cells(row, 1) <> "")
            sheet2Row = findInSheet2(.Cells(row, 1))
            If sheet2Row <> 0 Then copyRow (sheet2Row)
            row = row + 1
        Loop
    End With

End Sub

Function findInSheet2(text As String) As Integer

    Dim found As Range

    With Sheet2
        Set found = .Columns(1).Find(What:=text, MatchCase:=True)
        If Not found Is Nothing Then
            findInSheet2 = found.row
        Else
            findInSheet2 = 0
        End If
    End With

End Function

Sub copyRow(row As Integer)

    Sheet2.Rows(row).Copy
    Sheet3.Rows(getSheet3LastRow).PasteSpecial

End Sub

Function getSheet3LastRow()

    Dim found As Range

    Set found = Sheet3.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
    If Not found Is Nothing Then
        getSheet3LastRow = found.row + 1
    Else
        getSheet3LastRow = 1
    End If

End Function
于 2012-09-13T21:00:14.567 回答