刚学vba,用个for表格直接卡死了,求大佬帮忙看看
vba吧
全部回复
仅看楼主
level 2
w1y1◆ 楼主
这个lastr在2万左右。
主要是在第6列第3行单元格,插了个vlookup公式。
然后运行后就猛转圈,转了好久,有时候把表格卡无响应了。是不是写的有问题。[玫瑰]
2024年07月19日 08点07分 1
level 2
w1y1◆ 楼主
2024年07月19日 08点07分 2
都用vba了,干嘛还要用vlookup,把wsa的数据读到一个数组,把ioss文件里的数据读入到一个数组,然后两个数组直接比较
2024年08月01日 06点08分
level 8
把所有数据都放数组里就不会卡死了,几万v几万的话得好一会儿呢
2024年07月19日 09点07分 3
不知道搞蛙,可以不可以教一下。我手动我一般手动操作vlookup公式匹配捯是不卡的。几秒就ok了。
2024年07月19日 09点07分
level 8
顺便问一下楼下大佬,这种情况数组之间循环比对快,还是用index函数快?
2024年07月19日 09点07分 4
index操作单元格,数据大肯定慢咯
2024年07月19日 19点07分
回复 贴吧用户_QGDQN8V :是用index操作数组
2024年07月20日 10点07分
level 4
我乱写的,没有数据我也不知道写得对不对
Sub test()
Workbooks.Open ("E:\工作文件夹\记录\无效IOSS号.xlsx")
Set sht = Workbooks("无效IOSS号.xlsx").Sheets("Sheet1")
arr = sht.Range("A1:A" & [a65536].End(3).Row)
Workbooks("无效IOSS号.xlsx").Close False
Set sht1 = ActiveSheet
arr1 = sht1.Range("E1:F" & [E65536].End(3).Row)
For i = 3 To UBound(arr1)
For j = 1 To UBound(arr)
If arr1(i, 1) = arr(j, 1) Then
arr1(i, 2) = arr(j, 1)
Exit For
End If
Next
Next
sht1.Range("E1:F" & [E65536].End(3).Row) = arr1
End Sub
2024年07月19日 09点07分 5
蟹蟹,我一会上机试下,可能我思路不太对,我想不用在vba实现匹配,原先想的是用vba根据数据的行数循环插入vlookup公式,,让vlookup公式帮我实现匹配[哈哈]
2024年07月19日 10点07分
level 5
这样写 是很慢 其实你可以看看excel 自填充的代码 他根本不需要用循环。循环这个东西别轻易用 数据多了会超级卡
2024年07月19日 11点07分 6
我记得是 autofilter destination lastr
2024年07月19日 11点07分
@哈根达斯1224MH 是,我把循环删了,用向下填充一点都不卡,okk[玫瑰]
2024年07月19日 13点07分
level 7
你是在单元格填充了公式
每填充一个单元格,所有公式都会重新计算一次
如果非要写入公式
可以在循环前加上Application.Calculation = xlManual 关闭自动计算
循环后加上Application.Calculation = xlAutomatic恢复自动计算
2024年07月19日 13点07分 7
level 6
都用vba了就不需要插入公式了
2024年07月20日 02点07分 8
level 1
哥们,这种小需求直接让豆包帮你写
2024年07月20日 08点07分 9
level 1
Sub test()
dim wb as worksheet
dim wsA as worksheet,wsB as worksheet
dim RowA
application.EnableEvents = false
application.ScreenUpdating = false
set wb = Workbooks.Open ("E:\工作文件夹\记录\无效IOSS号.xlsx")
Set wsa = thisWorkbook.Sheets("Sheet1")
set wsb = activesheet
RowA=wsb.range("E" & wsb.rows.count).end(xlup).row
with wsb
.range("F3“).Formula = "VLookUP(E3,'" & wb.fullpath & "'[" & wsa.name & "!]$A:$A,1,0)"
.range("F3").autofill .range("F3:F" & rowa)
end with
wb.close false
application.EnableEvents = True
application.ScreenUpdating = True
End Sub
2024年07月20日 10点07分 10
level 2
为什么不用python
2024年08月01日 11点08分 12
1