|
楼主 |
发表于 2019-6-13 16:35
|
显示全部楼层
您指正的对,确实是基础知识比较差,我是真心觉得VBA好用,想学习一下,日常也有在看视频讲解看论坛大神的教学帖子,但是没接触过代码收益较慢,工作又需要常用VBA来提高效率。
有的代码,我稍微能理解它是干什么用的,但是就是不知道怎么改,您发了修改的我就知道以后可以怎么改了。
ReDim arr(1 To UBound(arr1), 1 To 13)
For i = 1 To UBound(arr)
If Trim(arr1(i, 1)) = "单站验证" Or Trim(arr1(i, 1)) = "单验审核" Or Trim(arr1(i, 1)) = "网优审核" Or Trim(arr1(i, 1)) = "现场联调" Then
If InStr(arr1(i, 2), "皮基站") = 0 Then
n = n + 1
For j = 1 To 13
arr(n, j) = arr1(i, j)
Next j
End If
End If
Next i
您的代码,输入了就可以用,非常厉害,但是不知道为什么使用今天新导出的“工单查询”表时候,不包含“皮基站”这个条件没有生效,将它一起提取出来了,我尝试修改了一下,能用,但是不确定改的是否正确,是不是正确的修改思路,麻烦您再看一下指正。
第二个功能,我试着写了一个,但是感觉还是有漏洞,像怎么提取制定表格的内容 Set wb = Workbooks.Open(ThisWorkbook.Path & "\移动集中开站工单信息收集") 这句话,我怎么查论坛都没看见相似,我改成了这个样不会报错,但是提取的还是工单的内容。真心不晓得怎么改。
Sub 收集() '''QQ:705664849
Dim d
Dim csv, str, rstr
Dim x, y, r As Integer
Dim arr, rarr
Set d = CreateObject("Scripting.Dictionary")
csv = Dir(Application.ThisWorkbook.Path & "\*.csv")
rarr = Range("C2:R" & Range("C1048576").End(xlUp).Row)
Set wb = Workbooks.Open(ThisWorkbook.Path & "\移动集中开站工单信息收集")
arr = wb.Worksheets(1).Range("S2:W" & wb.Worksheets(1).Range("S1048576").End(xlUp).Row)
wb.Close False
For x = 1 To UBound(arr)
str = arr(x, 1) 'csv中的基站名称定义为str
d(str) = x 'str写入字典key,Item是在CSV工参对应的行号
Next x
For y = 1 To UBound(rarr)
rstr = rarr(y, 1) '汇总表中基站名称
If d.exists(rstr) Then
r = d(rstr) 'rstr在字典中的行号,字典的写入是csv的arr数组位置(行号)
rarr(y, 15) = arr(r, 4) '更新驳回分类
rarr(y, 16) = arr(r, 5) '更新驳回详情
End If
Next y
Range("Q2").Resize(UBound(rarr), 2) = rarr
MsgBox "工参完成更新,用时" & Timer - t & "秒!"
End Sub
麻烦您有时间的时候能够再帮忙指正一下,万分感谢。 |
|