求助!VB如何根据条件,实现两个EXCEL间的数据传递?
有a.xlsx和b.xlsx两个excel表格,b.xlsx中的某行的网络编号、分支编号和元件编号值,如果和a.xlsx中的某一行的这三个编号相同,则b.xlsx这一行的PAR3 = a.xlsx编号相同行的PAR2,PAR4=a.xlsx中的PAR3,如何用VB实现这一功能呢?需要进行多个excel表的比较,希望有高手能给出代码,谢谢!
其中a.xlsx的sheet1:
A B C D E F G
NETNUM BRNUM ELNUM ID PRA1 PAR2 PAR3
1 1 1 22 0.5 100 70
1 1 2 40 0.8 170 40
1 2 3 22 0.1 130 20
2 1 1 23 0.6 110 80
2 2 2 50 0.7 170 40
2 2 3 40 0.4 120 60
其中B.xlsx的sheet2:
A B C D E F G H
NETNUM BRNUM ELNUM ND PRA1 PAR2 PAR3 PAR4
1 1 2 20 0.8 170
2 2 3 20 0.4 120 VB;EXCEL;筛选;数据传递
[解决办法]
Sub Check()
''引用 Microsoft Scripting Runtime
Dim bDic As New Dictionary, i As Long
With Application.Workbooks("a.xlsx").Sheets("sheet1")
''先读取所有的型号到字典中
For i = 2 To 100 ''最后一行自己修改
''用前3列内容组成关键字的一部分
w1 = Trim$(.Cells(i, 1)) & "_" & Trim$(.Cells(i, 2)) & "_" & Trim$(.Cells(i, 3))
''记录需要的内容
bDic(w1 & "_par2") = .Cells(i, 6) ''par2在第6列
bDic(w1 & "_par3") = .Cells(i, 7) ''par3在第7列
Next
End With
''再更新到目标表格中==>如果有多个表格需要更新可以复制下面的代码
With Application.Workbooks("b.xlsx").Sheets("sheet2")
For i = 2 To 100 ''最后一行自己修改
''用前3列内容组成关键字的一部分
w1 = Trim$(.Cells(i, 1)) & "_" & Trim$(.Cells(i, 2)) & "_" & Trim$(.Cells(i, 3))
''从字典中读取内容
.Cells(i, 7) = bDic(w1 & "_par2") ''sheet2.par3=sheet1.par2
.Cells(i, 8) = bDic(w1 & "_par3") ''sheet2.par4=sheet1.par3
Next
End With
bDic.RemoveAll ''清除
End Sub
Sub Check()
Dim ExcelObj As Object
Set ExcelObj = GetObject(, "excel.application")
''引用 Microsoft Scripting Runtime
Dim bDic As New Dictionary, i As Long
With ExcelObj.Workbooks("a.xlsx").Sheets("sheet1")
''先读取所有的型号到字典中
For i = 2 To 100 ''最后一行自己修改
''用前3列内容组成关键字的一部分
w1 = Trim$(.Cells(i, 1)) & "_" & Trim$(.Cells(i, 2)) & "_" & Trim$(.Cells(i, 3))
''记录需要的内容
bDic(w1 & "_par2") = .Cells(i, 6) ''par2在第6列
bDic(w1 & "_par3") = .Cells(i, 7) ''par3在第7列
Next
End With
''再更新到目标表格中==>如果有多个表格需要更新可以复制下面的代码
With ExcelObj.Workbooks("b.xlsx").Sheets("sheet2")
For i = 2 To 100 ''最后一行自己修改
''用前3列内容组成关键字的一部分
w1 = Trim$(.Cells(i, 1)) & "_" & Trim$(.Cells(i, 2)) & "_" & Trim$(.Cells(i, 3))
''从字典中读取内容
.Cells(i, 7) = bDic(w1 & "_par2") ''sheet2.par3=sheet1.par2
.Cells(i, 8) = bDic(w1 & "_par3") ''sheet2.par4=sheet1.par3
Next
End With
bDic.RemoveAll ''清除
Set ExcelObj = Nothing
End Sub