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