【发布时间】:2016-11-24 05:14:34
【问题描述】:
我在 Excel 电子表格中有一个非常大的数据块(100,000 行 x 30 列)。
第一列只能有六个不同值之一 (CAT1..CAT6)。
我需要将内容拆分到同一本书的 6 个电子表格中。
我在源变量中加载源范围并将其拆分为目标变量,我将其写入目标表中。
代码是这样的: 子TestVariant()
Dim a, b, c As Variant
Dim i, j, k As Variant
Worksheets("Sheet1").Activate
a = Worksheets("Sheet1").Range("A1:AD100000").Value
ReDim b(UBound(a, 1), UBound(a, 2))
ReDim c(UBound(a, 1), UBound(a, 2))
j = 1
k = 1
For i = 1 To UBound(a, 1)
Select Case a(i, 1)
Case "CAT01"
b(j, 1) = a(i, 1)
'..
b(j, 30) = a(i, 30)
j = j + 1
Case Else
c(k, 1) = a(i, 1)
'..
c(k, 30) = a(i, 30)
k = k + 1
End Select
Next i
Worksheets("Sheet2").Range("A1").Resize(UBound(b, 1), UBound(b, 2)) = b
Worksheets("Sheet3").Range("A1").Resize(UBound(c, 1), UBound(c, 2)) = c
End Sub
现在回答问题:
-
有没有办法一次将一个“行”从源变体复制到目标变体?类似的东西
b(j,) = a(i,)
有没有办法简单地将目标变体重新调整为数据内容(最初我只是 DIM 以匹配源,但每个目标变体的内容显然都比源少
还有其他更有效的分割问题方法吗? (收藏?钥匙?)
任何建议将不胜感激。
感谢阅读
危机
【问题讨论】:
-
您可以使用
Filter,只需在A列中通过“CAT”过滤整个数据,然后将整个过滤范围复制到另一个工作表,这是最快和最简单的方法将大量收集数据 -
将范围复制到范围似乎需要很长时间(几小时!)
-
在 Variant 中加载数据非常快。
-
你有没有尝试将范围复制到范围,并添加行
Application.ScreenUpdating = False,它的运行速度令人惊讶 -
我总是关闭屏幕更新和计算,因为有很多查找和匹配指向拆分的目标工作表。