我有一个Excel问题应该很容易(逻辑上),但我对Visual Basic的了解非常有限。我有几个文件夹,每个文件夹中包含大约30个.xlsm文件(每个文件代表一天)。在每个文件的表13和14中是具有我需要的两条信息的时间表(表单13是白班,表单14是夜班)。 A列有员工姓名,第I列有车辆编号。我需要做的是提取使用车辆编号MT332的员工姓名。
例如,假设这是其中一个文件中的一张:
Row A: Row I:
Doe, John MT426
Smith, Jim MT856
Richard, Greg MT332
Parson, Fred MT265
我需要从文件中的表格中将名称“Richard,Greg”提取到单独的电子表格中的列表中。该列表看起来像这样:
Drivers for MT332
Days Nights
Richard, Greg Hamill, Susan
Lunz, Trent Forter, Heath
... ...
其中Days列来自表单13,而Nights列来自每个文件的表单14。
请尽力指导我;我知道很少的VB语法!
谢谢!
(注意:这些名字不真实)
答案 0 :(得分:0)
试一试。
代码循环遍历所有工作簿,抓取数据,并将其添加到活动工作簿中的相关列。
Sub GetMT332Drivers()
Dim wbk As Workbook, cl As Range
Range("A1") = "Drivers for MT332"
Range("A2") = "Days"
Range("B2") = "Nights"
For Each wbk In Workbooks
If wbk.Name <> ThisWorkbook.Name Then
For Each cl In wbk.Worksheets("Sheet13").Range("I2:I" & wbk.Worksheets("Sheet13").Range("I1").End(xlDown).Row)
If cl = "MT332" Then
Worksheets("Sheet1").Range("A" & Worksheets("Sheet1").Range("A1048576").End(xlUp).Row + 1) = cl.Offset(0, -8)
End If
Next cl
For Each cl In wbk.Worksheets("Sheet14").Range("I2:I" & wbk.Worksheets("Sheet14").Range("I1").End(xlDown).Row)
If cl = "MT332" Then
Worksheets("Sheet1").Range("B" & Worksheets("Sheet1").Range("B1048576").End(xlUp).Row + 1) = cl.Offset(0, -8)
End If
Next cl
End If
Next
End Sub