【发布时间】:2022-01-21 19:27:00
【问题描述】:
目前我有一个宏,它只清除当前工作表中“D3:D1000”中的值,然后查看名为“SCHEDULE CALCULATIONS”的工作表,通过“O”列搜索并查找匹配项(该值在当前工作表的“A1”),当找到匹配项时,它会复制同一行的“A”列中的值并将其粘贴到从“D3”开始的当前工作表中,并一直工作直到找到所有匹配项,并且移动到下一张纸上并执行相同的操作,直到除了已定义为不做的图纸之外的所有图纸都完成为止。
Sub FILL_CHASSIS_REF()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "GALVANISED" And ws.Name <> "ALUMINUM" And ws.Name <> "LOTUS" And ws.Name <> "TEMPLATE" And ws.Name <> "SCHEDULE CALCULATIONS" And ws.Name <> "TRUSS" And ws.Name <> "DASHBOARD CALCULATIONS" And ws.Name <> "GALVANISING CALCULATIONS" Then
With ws.Range("D3:D1000")
.Formula2R1C1 = _
"=IF(ROWS(R2C25:R[-1]C[21])<=COUNTIF('SCHEDULE CALCULATIONS'!R2C15:R1000C15,R1C1),INDEX('SCHEDULE CALCULATIONS'!R2C1:R1000C1,AGGREGATE(15,3,('SCHEDULE CALCULATIONS'!R2C15:R1000C15=R1C1)/('SCHEDULE CALCULATIONS'!R2C15:R1000C15=R1C1)*(ROW('SCHEDULE CALCULATIONS'!R2C15:R1000C15)-{1}),ROWS(R2C25:R[-1]C[21]))),"""")"
.Value = .Value
End With
End If
Next ws
End Sub
虽然这项工作需要时间,因为目前有 26 张纸要通过。 我知道这段代码效率太低,而且我知道的东西还不够好。 任何帮助将不胜感激。
【问题讨论】:
-
看看这个,看看它是否有助于提高性能...stackoverflow.com/questions/70058414/…
-
感谢您方便了解。