【发布时间】:2021-07-23 23:23:54
【问题描述】:
我正在编写报告报告。这意味着;我有一个主报告 (sheet 'Rm'),它将保存来自其余子报告 (sheet 'Rs_1'....'Rs_n') 的结果值。
Rm 将只写入每个Rs_i 中的 2 列,并将按顺序粘贴到找到的每个子报告的右侧。
由于有超过 100,000 个单元格和更多要复制和粘贴的 100 个子报告,我想尽可能优化时间的最佳方式。
所以我的问题是。 vba 将列 Worksheets(Rs_1).(Range("B14:B500;F14:F500") 从 worksheets(Rs_1).Range("A14:F500") 复制到主报告中的两 (2) 列中的最优化方法是什么:Worksheets(Rm).Range("E15:F501")
For Each i_Rs In ActiveWorkbook.Worksheets
If i_Rs.Name = mainReportName Then
'do Nothing on Main Report
Else
'-->take report's Order Nr and Part Nr
i_Rs_Nr = GetNumeric(i_Rs.Range(Rs_NrPosRng).Value)
i_Rs_PartNr = GetNumeric(i_Rs.Range(Rs_ParNrPosRng).Value)
'-->get Rs big Range
Set i_Rs_BigRng = FindStringRng("A:H", "Characteristic", i_Rs.Name)
Set i_Rs_BigRng = Range(i_Rs_BigRng, i_Rs_BigRng.End(xlToRight).End(xlDown))
'-->set the actual range of MainReport to paste value from
For j_Rm = 1 To Rm_BigRng.row Step 2 ' loop on every two columns
Set j_RmRng = Range(Rm_BigRng(1, 1), Rm_BigRng(qtyCharacsRows, 2))
'************************************************
'*** HERE logic to take the sub from each report and copy-paste values
'************************************************
Set j_RmPartNrRng = Range(Rm_BigRng(1, 1), Rm_BigRng(1, 1))
Set j_RmPartNrRng = Cells(j_RmRng.row - 2, j_RmRng.Column + 1)
'-->write part number into j_Rm
j_RmPartNrRng.Value = i_Rs_PartNr
'**** get sub range for each Rs
Set i_Rs_BigRng = Range(i_Rs_BigRng(2, 1), i_Rs_BigRng(qtyCharacsRows + 1, i_Rs_BigRng.Columns.count)) ' Need optimization to erase first row
Set i_Rs_subRng = Union(i_Rs_BigRng.Columns(2), i_Rs_BigRng.Columns(6)) ' need columns in letters
'*** Copy Rs("B:B,F:F").values into Rm("E:F").values
j_RmRng.Value = i_Rs_subRng.Value 'Error: the first column is copying good the second is just a copy of the first
Next j_Rm
End If
Next
【问题讨论】:
-
你能发布你现有的代码吗?
-
我正在编码其余的逻辑,准备数据,设置主要范围等。代码不需要从每个子报告中循环(我会这样做)。只是按照我的建议从一张纸复制到主要范围。非常感谢您的时间......当我开发其余部分时,我会发布它
-
我已经发布了代码..你可以重新打开吗?