Excel 具有更多结果的VBA循环
我必须比较2个文件xlsx。两者看起来一样。文件1将每天更新 现在,脚本应该比较第5列中的每个ID(单个数字),如果它也在文件2中的第5列中。如果是,文件1第4列(同一行)中的文本将在文件2中更新。如果文件2中还没有ID号,则应将完整的行复制到文件2末尾的第一个空闲行 这是我已经拥有的:Excel 具有更多结果的VBA循环,excel,vba,Excel,Vba,我必须比较2个文件xlsx。两者看起来一样。文件1将每天更新 现在,脚本应该比较第5列中的每个ID(单个数字),如果它也在文件2中的第5列中。如果是,文件1第4列(同一行)中的文本将在文件2中更新。如果文件2中还没有ID号,则应将完整的行复制到文件2末尾的第一个空闲行 这是我已经拥有的: On Error Resume Next Set wkb = Workbooks.Open(Filename:=my_FileName) Set wkb1 = ThisWorkbook wkb
On Error Resume Next
Set wkb = Workbooks.Open(Filename:=my_FileName)
Set wkb1 = ThisWorkbook
wkb1.Activate
Set wks = wkb.Worksheets(1)
Set wks1 = wkb1.Worksheets(1)
anz = wks.Cells(65536, 5).End(xlUp).Row
anz1 = wks1.Cells(65536, 5).End(xlUp).Row
For Z = 2 To anz1
suchwert = wks1.Cells(Z, 5)
With wks.Range("E2:E" & anz)
Set c = .Find(suchwert, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
For s = 4 To 5
wks.Cells(c.Row, s) = wks1.Cells(Z, s)
Next
Else
For s = 1 To 9
wks.Cells(anz + 1, s) = wks1.Cells(Z, s)
Next
End If
End With
Next Z
对于1个结果,它运行良好。但是文件1上有700多个ID
有什么想法吗
非常感谢你的帮助
亲切问候,,
克里斯也许你可以试试这个
On Error Resume Next
Set wkb = Workbooks.Open(Filename:=my_FileName)
Set wkb1 = ThisWorkbook
wkb1.Activate
Set wks = wkb.Worksheets(1)
Set wks1 = wkb1.Worksheets(1)
anz = wks.Cells(65536, 5).End(xlUp).Row
anz1 = wks1.Cells(65536, 5).End(xlUp).Row
Cpt = anz
For Z = 2 To anz1
suchwert = wks1.Cells(Z, 5)
With wks.Range("E2:E" & anz)
Set c = .Find(suchwert, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
For s = 4 To 5
wks.Cells(c.Row, s) = wks1.Cells(Z, s)
Next
Else
For s = 1 To 9
Cpt = Cpt +1
wks.Cells(Cpt, s) = wks1.Cells(Z, s)
Next
End If
End With
Next Z
我认为它对所有人都有效,但每次只要替换单元格值,如果我一次又一次地启动代码,一切都正常。但是我不知道在哪里设置循环。@ChrisPE它做了什么同样的结果。我在文件2中得到一行更新。@ChrisPE文件2是wks?是的。wkb/wks是文件2现在复制所有条目。:)可能是一件小事,但所有条目都粘贴在新行中。有没有办法:4到5不应该插入新行。如果条目已在列表中,则第4列应仅在同一行中更新。到目前为止,从1点到9点的效果都很好。只有新线从左向右向下滑动。所以它看起来像是一个楼梯。我们能不能快速解决这个问题?