gpt4 book ai didi

excel - 使用高级过滤器加速从 VBA 中的另一个工作表复制

转载 作者:行者123 更新时间:2023-12-04 20:51:00 24 4
gpt4 key购买 nike

我对 VBA 和这个社区很陌生,所以我希望我不会问任何愚蠢的问题,如果我的问题的措辞不符合标准,我会事先道歉。
我一直在编写代码,目的是根据标准遍历列并将第二张表中的列中的值复制到主表中的空列中,但是我遇到了一些问题这段代码的速度,因为我需要很长时间才能看到结果(有时它甚至会崩溃,具体取决于数据的大小)
这是代码的相关部分:

Dim x1 As Integer
Worksheets("A").Activate
x1 = ActiveSheet.UsedRange.Columns.Count
'Add a column in the end to put the add data
Worksheets("A").Cells(1, x1 + 1) = "added data"
Dim i As Integer
Dim j As Integer
Dim N1 As Integer
Dim N2 As Integer
N1 = Worksheets("A").Cells(Rows.Count, 1).End(xlUp).Row
N2 = Worksheets("B").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To N1
For j = 2 To N2
If Worksheets("B").Cells(j, 1).Value = Worksheets("A").Cells(i, 3).Value Then

Worksheets("A").Cells(i, x1 + 1).Value = Worksheets("B").Cells(j, 3).Value

GoTo NextIteration

Else

End If

NextIteration:

Next j

Next i
如您所见,我已经尝试过 GoTo NextIteration 方法,它显着减少了执行代码所需的时间,但我想知道是否有更好/更快的方法来执行此操作,尤其是在了解了 VBA 中 AdvancedFilter 函数的速度之后.
另外,请随时给我任何指示或建议,即使它与主要问题无关。
有一个美好的夜晚。

最佳答案

如评论中所述,VLOOKUP 可能是您的 friend 。如果由于某种原因,您必须以编程方式附加“添加的数据”列,这里是一个代码示例。

Public Sub Test()
Dim wsA As Excel.Worksheet
Dim usedRngA As Excel.Range
Dim formulasRange As Excel.Range
Dim targetColIndex As Long
Dim targetLastRowIndex As Long
Dim sourceLastRowIndex As Long
Dim lookupFormula As String

Set wsA = ThisWorkbook.Worksheets("A")
Set usedRngA = wsA.UsedRange

'Column header.
targetColIndex = usedRngA.Columns.Count + 1
wsA.Cells(1, targetColIndex).Value = "added data"

'Formulas.
targetLastRowIndex = usedRngA.Rows.Count
sourceLastRowIndex = ThisWorkbook.Worksheets("B").UsedRange.Rows.Count
'Check if we have anything to work with.
If targetLastRowIndex > 1 And sourceLastRowIndex > 1 Then
lookupFormula = "=IFERROR(VLOOKUP(C2,B!$A$2:$C$" & sourceLastRowIndex & ",3,FALSE), ""Not Found"")"
Set formulasRange = wsA.Range(wsA.Cells(2, targetColIndex), wsA.Cells(targetLastRowIndex, targetColIndex))
formulasRange.Formula = lookupFormula
End If

'If desired, eliminate formulas.
formulasRange.Value = formulasRange.Value
End Sub

关于excel - 使用高级过滤器加速从 VBA 中的另一个工作表复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62543019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com