代码vba停止在第一个空间中处理单元格

时间:2016-03-30 09:24:12

标签: excel vba excel-vba

我的代码有点问题,当我只是测试它时,它就像我想要的那样,但是当我把它放在实际工作中时,我遇到了一个问题,我在这里无法解决问题

代码将2列与其他2列进行比较,并将结果存储在其他3列中,问题是当他从单元格中复制数据时,如果字符之间有空白则停止,因此它只复制第一个单词,例如如果我总是需要'Air Approval'''他只复制''Air''但是没有钻孔链可以帮助我解决这个问题,并提前谢谢你

Sub comparer()
Dim Derlig As Long, Lig As Long, Ref As String
Dim T_ab, D_ab As Object, T_cd, D_cd As Object
Dim T_fgh, Cptr As Long, Separ
Dim start As Single

    start = Timer
    Application.ScreenUpdating = False

    Range("E2:G30000").Clear

    Set D_ab = CreateObject("scripting.dictionary")
     Derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
    T_ab = Range("A2:B" & Derlig)
    For Lig = 1 To UBound(T_ab)
        Ref = T_ab(Lig, 1) & " " & T_ab(Lig, 2)
        If Not D_ab.exists(Ref) Then D_ab.Add Ref, ""
    Next
    T_ab = D_ab.keys

    Set D_cd = CreateObject("scripting.dictionary")
     Derlig = Columns("C").Find(what:="*", searchdirection:=xlPrevious).Row
    T_cd = Range("C2:D" & Derlig)
    For Lig = 1 To UBound(T_cd)
        Ref = T_cd(Lig, 1) & " " & T_cd(Lig, 2)
        If Not D_cd.exists(Ref) Then D_cd.Add Ref, ""
    Next
    T_cd = D_cd.keys


    ReDim T_fgh(3, 0) 
    For Lig = 0 To UBound(T_ab)
        If Not D_cd.exists(T_ab(Lig)) Then
            Separ = Split(T_ab(Lig))
            ReDim Preserve T_fgh(3, Cptr)
            T_fgh(0, Cptr) = Separ(0)
            T_fgh(1, Cptr) = Separ(1)
          Cptr = Cptr + 1
        End If
    Next

    For Lig = 0 To UBound(T_cd)
        If Not D_ab.exists(T_cd(Lig)) Then
            Separ = Split(T_cd(Lig))
            ReDim Preserve T_fgh(3, Cptr)
            T_fgh(0, Cptr) = Separ(0)
            T_fgh(2, Cptr) = Separ(1)
          Cptr = Cptr + 1
        End If
    Next

    Range("F2").Resize(Cptr, 3) = Application.Transpose(T_fgh)
    Derlig = Range("E2:H100000").Find(what:="*", searchdirection:=xlPrevious).Row
    Range("F2:H" & Derlig).Borders.Weight = xlThin

    Application.ScreenUpdating = True
    MsgBox "comparaison efffectuée en " & Timer - start & " secondes"

End Sub

1 个答案:

答案 0 :(得分:0)

对于所有感兴趣的人来说这是问题的解决方案很简单,但我在开始时看不到它只需要在Separ = Split(T_cd(Lig), "¤")中添加“¤”来完成所有链

相关问题