代码vba在第一个空格中停止处理单元格
我的代码有一个小问题,当我刚刚测试它的时候,它可以正常工作,但是当我把它放到实际工作中时,我遇到了一个我无法解决的问题 代码将2列与其他2列进行比较,并将结果存储在其他3列中问题在于,当他从单元格复制数据时,当字符之间出现空白时,他会停止,因此它只复制第一个单词。例如,如果我有“始终需要空气批准”,他只复制“空气”,而不复制孔链。请提供帮助请允许我解决此问题,并提前向您表示感谢代码vba在第一个空格中停止处理单元格,vba,excel,Vba,Excel,我的代码有一个小问题,当我刚刚测试它的时候,它可以正常工作,但是当我把它放到实际工作中时,我遇到了一个我无法解决的问题 代码将2列与其他2列进行比较,并将结果存储在其他3列中问题在于,当他从单元格复制数据时,当字符之间出现空白时,他会停止,因此它只复制第一个单词。例如,如果我有“始终需要空气批准”,他只复制“空气”,而不复制孔链。请提供帮助请允许我解决此问题,并提前向您表示感谢 Sub comparer() Dim Derlig As Long, Lig As Long, Ref As Stri
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
对于所有感兴趣的人来说,这是问题的解决方案,这很容易,但一开始我看不到它,我只需要在Separ=Split(t_cd(Lig),“·”)中添加“·来完成所有的链我首先要正确地标注变量的尺寸,并给出它们可以理解的名称。目前,您正在使用变体,阅读起来非常尴尬。您好,谢谢您的回复,但我不明白您的意思是什么?
将t_ab、D_ab作为对象
<这会创建一个变体
和一个对象
,因为它们没有正确声明。另外,像T_ab
和D_ab
这样的东西对我们来说并不意味着任何东西,这使您的代码难以阅读。这是一个指向我的文件的链接,如果这有助于T_ab和D_ab是列“a”和列“b”之间的串联,对于列C和D也是一样的