【发布时间】:2015-11-11 16:27:11
【问题描述】:
我有一个大型数据集,并希望根据一组条件查询到另一张工作表的列。我有一个工作方法,它使用循环来查找开始和循环来查找结束以获取所需的行,但这很慢。
我想避免查找函数所需的唯一列,因为这会使数据的结尾难以找到。我考虑过尝试使用某种 FindAll 函数,但似乎无法弄清楚如何启动它。
我已经看到很多关于过滤器的内容,但这些似乎可以通过复制整行来工作,我想避免这种情况。
就像我说的,这段代码运行良好,但速度很慢,因为它会在模型运行期间运行 1000 次。我也有几个类似的潜艇,我希望能够推出解决方案
Sub Join(CI, FI, FSD)
Dim a, b, LastRow As Long
LastRow = Fcst_Cust.Range("a1048576").End(xlUp).Row + 1
'find all values for that customer ID for dates greater than the forecast start date and copy onto forecast tab.
a = 3
b = 2
Do Until ((Raw_IFcst.Cells(b + 1, 2) = CI) And (Raw_IFcst.Cells(b + 1, 3) >= FSD))
a = a + 1
b = b + 1
Loop
Do Until Raw_IFcst.Cells(b + 1, 2) <> CI
b = b + 1
Loop
Raw_IFcst.Range("A" & a & ":AZ" & b).Copy
Fcst_Cust.Range("C" & LastRow).PasteSpecial xlPasteValues
Raw_IFcst.Range("BB" & a & ":CW" & b).Copy
Fcst_Cust.Range("BG" & LastRow).PasteSpecial xlPasteValues
End Sub
【问题讨论】: