将具有匹配列的6个工作簿中的数据复制到单个工作簿

时间:2015-02-02 07:23:55

标签: excel vba excel-vba

我有6种不同的工作簿,每本工作簿至少有3张。我希望VBA代码能够使用来自othes的匹配列自动生成主工作簿。

练习册1 - “基线”

        hstname Loc  Dept   User    logID   HstIP   MACAddr     OS
         abcghj jay  aa     abc     1        2       1.2.3.      7
         sgtsx  jay  ss     sgt     2        3       4.56.8      8
          wrgyr jay  dd     wrg     3        4       5.6.7       8
         dfhbnj jay  tt    gdxvg    4        8      3.4.5.6.7    7

练习册2 - “Daily1”

           hstname    OnlineStatus     result
          abcghj         scan            yes
          sgtsx         scan             yes
          wrgyr         scan             yes
         dfhbnj,         scan            yes
           sdrgswdeg    scan             no
          fhawrtu65      scan            no

练习册2-“Daily2”

         hstname        OnlineStatus      result
          abcghj          scan             yes
           sgtsx          scan            yes
             wrgyr        scan            yes
             dfhbnj,      scan            yes
            sdrgswdeg     scan             no

每日工作3,每日4,每日5将与daily1& daily2具有相同的列。

我已经填写了主表,作为一个例子,让您了解我的要求到底是什么。 注意:在我的主表中,列ID,hstname,user,dept,loc,mac addr取自“baseline”工作簿。如果hstname列在“baseline”和“daily1”工作簿中匹配,则将daily1工作簿的“result”列复制到Master工作簿的“daily1”列。对daily2,3,4& 5重复相同的操作。另请注意,不应存在任何重复值(Master中重复的hstnames)。

MASTER表

 ID hstname   daily1    daily2  daily3 d4 d5 User     Dept    Loc   MACAddr
  1 abcghj    yes       yes      yes          abc     aa      jay    1.2.3.
  2 sgtsx     notscan   no        no          sgt     ss      jay    4.56.8
  6 wrgyr      yes      yes       no          wrg     dd      jay    5.6.7
  4 dfhbnj,    yes    notscan     no         gdxvg    tt      jay    3.4.5.6.7
  8 24dvg5t    no       yes       yes            xb   ff      jay    9.8.56

尝试使用此代码。但它完全没有达到目的。

   Sub LoopThroughDirectory()
   Dim MyFile As String
   Dim erow
   Dim Filepath As String
   Filepath = "D:\examp\"
   MyFile = Dir(Filepath)
   Do While Len(MyFile) > 0
        If MyFile = "master.xlsx" Then
        Exit Sub
        End If

   Workbooks.Open (Filepath & MyFile)
   Range("A2:D2").Copy
   ActiveWorkbook.Close

   erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range(Cells(erow, 1), Cells(erow, 4))

   MyFile = Dir
    Loop
    End Sub

1 个答案:

答案 0 :(得分:1)

如果您在尝试打开宏录制器并发现其功能之前从未使用过VBA。老实说,这就是我们大多数人开始使用VBA的方式。一些值得学习的好网站是Ozgrid或Excel先生。我们要检查的一些代码对于帮助您朝着正确的方向发展非常有帮助。