找到匹配,从Sheet1复制行并插入Sheet2

时间:2011-01-26 15:14:51

标签: excel-vba excel-2007 vba excel

在Sheet1中,我有大约10,000行代表不同的人。每个人都有一个位于D列的唯一ID,这是一个以文本形式存储的数字序列。

在Sheet2中,我有大约1,200个人条目,这些条目引用了位于A列的Sheet1中的匹配人员。此引用与Sheet1中使用的唯一ID相同。

我想要的是宏做的是:

  • 读入Sheet2上的单元格A1的值
  • 在Sheet1
  • 上的D列中找到匹配值
  • 复制Sheet1中的匹配行
  • 在Sheet2(第2行)
  • 下面插入匹配的行
  • 插入空白行(第3行)

  • 重复Sheet2上其余9,999个条目的步骤,以便匹配数据始终位于读入值下方,然后是空白行

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我可以建议您将来展示试图解决您遇到的问题的证据。通过这种方式,我们知道您正在参与社区,而不是试图从中提取免费劳动力。

这是您可以尝试的解决方案。它从sheet2中当前选定的单元格开始。

Function DoOne(RowIndex As Integer) As Boolean
    Dim Key
    Dim Target
    Dim Success
    Success = False
    If Not IsEmpty(Cells(RowIndex, 1).Value) Then
        Key = Cells(RowIndex, 1).Value

        Sheets("Sheet1").Select

        Set Target = Columns(4).Find(Key, LookIn:=xlValues)

        If Not Target Is Nothing Then
            Rows(Target.row).Select
            Selection.Copy
            Sheets("Sheet2").Select
            Rows(RowIndex + 1).Select
            Selection.Insert Shift:=xlDown
            Rows(RowIndex + 2).Select
            Application.CutCopyMode = False
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            Cells(RowIndex + 3, 1).Select
            Success = True
        End If

    End If
    DoOne = Success
End Function

Sub TheMacro()
    Dim RowIndex As Integer
    Sheets("Sheet2").Select
    RowIndex = Cells.row
    While DoOne(RowIndex)
        RowIndex = RowIndex + 3
    Wend
End Sub