希望编写vba代码,将两个Excel工作表中的数据合并为一个

时间:2015-07-31 08:10:15

标签: excel vba

我知道这个问题非常广泛,但我很感激您能给予的任何帮助。

手头的任务是从非常混乱的工作表(称为" Monkey")中获取数据并将其分类到另一个工作表(称为" Master")。有一列名为" name"这是两个电子表格之间唯一的常量。我想写一个宏,它将采取"常量"的第一行。列,在Monkey的常量列中找到相同的行,然后开始复制粘贴相关信息。

到目前为止我所拥有的是:

Sub Test()
    Dim Rng As Range
    Dim i As Long

    i = 2
    Application.ScreenUpdating = True
    While i <= 133
        Set Rng = Range("E" & i)
        If Rng = Worksheets("Monkey").Rng(, -16) Then
            Range("E138").Select
            ActiveCell.FormulaR1C1 = "Success!"
        Else
            i = i + 1
        End If
    Wend
End Sub

-

这只是为了测试匹配的vba代码部分(打印&#39;成功&#39;如果找到匹配&#39;)实际的复制粘贴子我自己写的,但是现在,任何人都可以帮助这个循环吗?常量列在主服务器上是E,在猴子上是U.将E2设置为范围是否有效,每次都找不到正确的行?

我愿意自己做很多实验,所以即使是最微小的建议也会有很大的帮助。

1 个答案:

答案 0 :(得分:1)

你可以从类似的东西开始:

  • 定义Master和Monkey的常量名称范围
  • 对于Master的每个值,搜索等效的猴子
  • 如果找到了猴子等同物,那就做你想要的了

    Public Sub Test()
        Dim cellMaster As Range, cellMonkey As Range
        Dim rngMasterCst As Range, rngMonkeyCst As Range
    
        ' Set constants columns from master and monkey
        Set rngMasterCst = Worksheets("master").Range("A1:A500")
        Set rngMonkeyCst = Worksheets("monkey").Range("A1:A500")
    
        ' For each constant of master
        For Each cellMaster In rngMasterCst
            ' Search for the value in Monkey
            Set cellMonkey = rngMonkeyCst.Find(cellMaster, LookIn:=xlValues)
    
            ' if the value is find
            If Not cellMonkey Is Nothing Then
                ' Here cellMaster and cellMonkey have the same "constant name"
                ' Navigate in the row with the help of .Offset()
            End If
        Next
    End Sub
    

改进:

  • 在范围内使用.end(xlDown)查找最后一行而不是将其设置为静态