首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

!VB怎么根据条件,实现两个EXCEL间的数据传递

2013-12-04 
求助!VB如何根据条件,实现两个EXCEL间的数据传递?有a.xlsx和b.xlsx两个excel表格,b.xlsx中的某行的网络编

求助!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

[解决办法]
在vb里改成这样:
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

热点排行